home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PROGREF / H221.ZIP / INTER39B.ZIP / INTERRUP.G < prev    next >
Text File  |  1994-02-06  |  275KB  |  7,699 lines

  1. Interrupt List, part 7 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------N-2F8000-----------------------------
  4. INT 2F - EASY-NET - INSTALLATION CHECK
  5.     AX = 8000h
  6. Return: AL = 00h not installed
  7.          FFh installed
  8. Program: EASY-NET is a shareware two-machine serial-port network
  9. --------N-2F8000-----------------------------
  10. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  11.     AX = 8000h
  12. Return: AL = FFh if installed
  13.         BX = CS of resident code
  14.         CX = ??? (03FCh)
  15. Program: TurboNET is a NetBIOS-based file redirector and server; a
  16.       demonstration version may be downloaded from Nanosoft's BBS
  17. SeeAlso: AX=8100h
  18. --------t-2F8000-----------------------------
  19. INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
  20.     AX = 8000h
  21.     DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
  22. Return: AL = status
  23.         00h no CS_TSR-compliant TSRs installed
  24.         01h installed, but signature did not match
  25.         FFh installed, signature matches
  26.         ES:DI -> resident process block (see below) of last installed
  27.               TSR (if DS:SI pointed at signature on entry)
  28. Program: the CS_TSR specification is a standardized TSR interface by Compact
  29.       Soft group in Kiev, Ukraine
  30. Desc:    determine whether any CS_TSR-compliant TSRs are installed on the
  31.       selected multiplex number
  32. Note:    AH=80h is the default, but any multiplex number from 80h to FFh may be
  33.       used
  34. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  35.  
  36. Format of process block:
  37. Offset    Size    Description
  38.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  39.  04h    BYTE    INT 2F multiplex number
  40.  05h    WORD    virtual process handle (unique among loaded TSRs)
  41.  07h  2 BYTEs    version (binary minor version, then major version)
  42.  09h    WORD    PSP segment of TSR
  43.  0Bh    DWORD    pointer to ASCIZ program name
  44.  0Fh  3 BYTEs    program creation date (day, month, year)
  45.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  46.  15h  3 BYTEs    process start date (day, month, year)
  47. --------F-2F8000DX0000-----------------------
  48. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  49.     AX = 8000h
  50.     DX = 0000h
  51.     DI = 0000h
  52. Return: AL = FFh if installed
  53.     DX:DI -> signature "FaxBiosjpc"
  54. Note:    FaxBIOS may use any multiplex number from 80h through FFh; to determine
  55.       whether it is installed, it is necessary to poll all multiplex
  56.       numbers for one which returns the above signature
  57. SeeAlso: AH=2Ah,AX=80FBh
  58. --------N-2F8001-----------------------------
  59. INT 2F - Nanosoft, Inc. TurboNET server - ???
  60.     AX = 8001h
  61.     DS:SI -> 16-byte buffer for ???
  62. Return: AH = status
  63.         00h successful
  64.         01h error (TurboNET busy)
  65. Note:    makes NetBIOS calls
  66. --------t-2F8001-----------------------------
  67. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  68.     AX = 8001h
  69.     DS:SI -> ASCIZ signature string for desired TSR (see below)
  70. Return: BX = process handle or 0000h if specified TSR not installed
  71.     ES:DI -> process block for TSR (see AX=8000h"CS_TSR") if BX<>0000h
  72. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  73.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  74.       ASCII v4.23 which is identical except for the changed attribution
  75.       and version (in fact, some instances of "4.23" were missed); the
  76.       hacked copy requires the signature string
  77.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  78.       simple signature "ASCII"
  79. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  80.  
  81. Values for signature strings:
  82.  "ASCII"    ASCII, a popup ASCII table with character input
  83.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  84.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  85. --------t-2F8002-----------------------------
  86. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  87.     AX = 8002h
  88.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  89. Return: ES:DI -> process block for specified TSR (see AX=8000h"CS_TSR")
  90.         unchanged if no match for process handle
  91. Note:    This function is used to allocate a process handle when the TSR
  92.       installs itself, by setting ES:DI to point at something other than
  93.       a CS_TSR process block's signature string and iterating through the
  94.       possible process handles (0001h to FFFFh) until ES:DI is returned
  95.       unchanged
  96. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  97. --------t-2F8003-----------------------------
  98. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  99.     AX = 8003h
  100.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  101.     other registers vary by TSR
  102. Return: vary by TSR, unchanged if not supported
  103. Program: the CS_TSR specification is a standardized TSR interface by Compact
  104.       Soft group in Kiev, Ukraine
  105. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  106. --------F-2F80FB-----------------------------
  107. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  108.     AX = 80FBh
  109.     BX = function number (see below)
  110.     DX:DI -> command buffer (see below)
  111. Return: AL = FFh if submitted OK
  112.     CX = result code (see below)
  113. Note:    FaxBIOS may use any multiplex number from 80h through FFh
  114. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  115.  
  116. Values for function number:
  117.  0001h    SYS_LOGIN
  118.  0002h    SYS_LOGOUT
  119.  0003h    SYS_GET_FAXAPP_INFO
  120.  0004h    STAT_IO_GET
  121.  0005h    STAT_FAXBIOS_GET
  122.  0006h    PDIR_OPEN
  123.  0007h    PDIR_CLOSE
  124.  0008h    PDIR_READ_PERSON
  125.  0009h    PDIR_PARTIAL_READ
  126.  000Ah    PDIR_READ_GROUP
  127.  000Bh    PDIR_READ_MEMBER_LIST
  128.  000Ch    PDIR_WRITE_PERSON
  129.  000Dh    PDIR_WRITE_GROUP
  130.  000Eh    PDIR_DELETE_PERSON
  131.  000Fh    PDIR_DELETE_GROUP
  132.  0010h    PDIR_READ_GROUP_LIST
  133.  0011h    PDIR_IN_GROUP
  134.  0012h    PDIR_OUT_GROUP
  135.  0013h    SCHED_OPEN
  136.  0014h    SCHED_ADD_DEST
  137.  0015h    SCHED_ADD_FILE
  138.  0016h    SCHED_SET_PARAMS
  139.  0017h    SCHED_CANCEL
  140.  0018h    SCHED_CLOSE
  141.  0019h    SLOG_OPEN
  142.  001Ah    SLOG_CLOSE
  143.  001Bh    SLOG_SHORT_ENV_STAT
  144.  001Ch    SLOG_LONG_ENV_STAT
  145.  001Dh    SLOG_DEST_STAT
  146.  001Eh    SLOG_FILE_STAT
  147.  001Fh    SLOG_CANCEL_ENV
  148.  0020h    RLOG_OPEN
  149.  0021h    RLOG_CLOSE
  150.  0022h    RLOG_READ
  151.  0023h    GRAPH_GET_FILE_TYPE
  152.  0024h    GRAPH_EXPORT_FILE
  153.  0025h    GRAPH_GET_LAYOUT_INFO
  154.  0026h    GRAPH_CREATE_FILE
  155.  0027h    GRAPH_CLOSE_FILE
  156.  0028h    GRAPH_CREATE_PAGE
  157.  0029h    GRAPH_WRITE
  158.  002Ah    GRAPH_END_PAGE
  159.  002Bh    GRAPH_OPEN_FILE
  160.  002Ch    GRAPH_GOTO_PAGE
  161.  002Dh    GRAPH_READ
  162.  002Eh    IOCTL_GET
  163.  002Fh    IOCTL_SET
  164.  0030h    IOCTL_ANSWER_FAX
  165.  0031h    IOCTL_DIAL
  166.  
  167. Values for result code:
  168.  0000h    successful
  169.  0001h    not prepared or servicing another client (busy)
  170.  0002h    call failed due to sharing (LOCKED)
  171.  0003h    logged-in client limit reached (FULL)
  172.  0004h    transport denied (TRANSPORT_DENIED)
  173.  0005h    not implemented (NOT_IMPLEMENTED)
  174.  0006h    aborted while in progress (ABORTED)
  175.  0007h    permissions denied (PERMISSION_DENIED)
  176.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  177.  0080h    unspecified system error occurred
  178.  0081h    an internal file was not found
  179.  0082h    an internal file could not be created
  180.  0083h    an internal file could not be opened
  181.  0084h    an internal file could not be closed
  182.  0085h    error occurred writing to an internal file
  183.  0086h    error occurred reading from an internal file
  184.  0087h    bad or corrupted file encountered
  185.  0088h    an access violation occurred
  186.  0089h    an internal file is empty
  187.  008Ah    insufficient memory to process request
  188.  008Bh    FaxBIOS was unable to issue a handle
  189.  008Ch    an error internal to FaxBIOS occurred
  190.  008Dh    no room on disk
  191.  0100h    unspecified error accessing client file
  192.  0101h    file not found
  193.  0102h    creation fault
  194.  0103h    open fault
  195.  0104h    close fault
  196.  0105h    write fault
  197.  0106h    read fault
  198.  0107h    file corrupted
  199.  0108h    access violation
  200.  0109h    empty file
  201.  0200h    unspecified argument error
  202.  0201h    bad function
  203.  0202h    bad option
  204.  0203h    bad structure size
  205.  0204h    bad buffer size
  206.  0205h    bad client ID
  207.  0300h    unspecified error with token
  208.  0301h    cover sheet token was invalid
  209.  0302h    logo token was invalid
  210.  0303h    signature token was invalid
  211.  0304h    font token was invalid
  212.  0305h    phone directory token was invalid
  213.  0306h    outbound route token was invalid
  214.  0307h    priority token was invalid
  215.  0308h    sort token was invalid
  216.  0309h    billing token was invalid
  217.  0400h    unspecified handle error
  218.  0401h    bad Phone Directory handle
  219.  0402h    bad scheduling handle
  220.  0403h    bad read send log handle
  221.  0404h    bad read receive log handle
  222.  0405h    bad graphics handle
  223.  0500h    data passed in structure was invalid
  224.  0501h    name field given is invalid
  225.  0502h    phone number given is invalid
  226.  0503h    poll code submitted is invalid
  227.  0504h    file type constant was invalid
  228.  0505h    BFT constant not defined or supported
  229.  0506h    resolution not defined or supported
  230.  0507h    page length not defined or supported
  231.  0508h    page width not defined or supported
  232.  0509h    date & time requested are ridiculous
  233.  050Ah    Subject text was not an ASCIZ string
  234.  050Bh    From text was not an ASCIZ string
  235.  050Ch    requested envelope ID was not found
  236.  050Dh    requested envelope ID is not valid
  237.  050Eh    envelope requested was not found
  238.  050Fh    destination index is out of range
  239.  0510h    file index is out of range
  240.  0511h    index into receive log is out of range
  241.  0512h    file name specified was incomplete or invalid
  242.  0513h    page selected was out of range
  243.  0514h    bit width more than byte width
  244.  0515h    mode for open is not defined
  245.  0516h    person index is out of range
  246.  0517h    person ID is out of range
  247.  0518h    group index out of range or invalid
  248.  0519h    group ID out of range or invalid
  249.  051Ah    range of indices to read is invalid
  250.  051Bh    group name given is invalid
  251.  051Ch    field_to_use is badly specified
  252.  051Dh    predicate invalid for field specified
  253.  0600h    unspecified client procedure error
  254.  0601h    device of interest is not present
  255.  0602h    device of interest has been removed
  256.  0603h    device of interest is not responding
  257.  0604h    device of interest is disabled
  258.  0605h    could not dial because device was in use
  259.  0606h    maximum destination limit exceeded
  260.  0607h    maximum file limit exceeded
  261.  0608h    scheduling closed with no destination
  262.  0609h    scheduling closed with no files or poll
  263.  060Ah    scheduling closed with no parameters specified
  264.  060Bh    file type specified does not match file
  265.  060Ch    file type specified is not supported
  266.  060Dh    file submitted is not exportable
  267.  060Eh    file type specified is not imageable
  268.  060Fh    error converting file
  269.  0610h    envelope could not be cancelled
  270.  0611h    Phone Directory is full
  271.  0612h    record is already in the Phone Directory
  272.  0613h    selected group in Phone Directory is full
  273.  0614h    person is already in the group
  274.  0615h    person is not in the group & cannot be removed
  275.  0616h    a graphics file to be created already exists
  276.  0617h    a graphics file to be read is empty
  277.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  278.  0619h    graph read or write attempted without goto or create
  279.  061Ah    graph page contains no data
  280.  061Bh    Phone Directory is already open for this client
  281.  061Ch    schedule log is already open for this client
  282.  061Dh    receive log is aready open for this client
  283.  061Eh    Phone Directory function requires write mode
  284.  0800h    denied exclusive use of the API
  285.  
  286. Format of SYS_LOGIN command buffer:
  287. Offset    Size    Description
  288.  00h    WORD    structure size
  289.  02h    WORD    function number
  290.  04h    WORD    return code
  291.  06h    WORD    client ID
  292.  08h    WORD    API Major Version
  293.  0Ah    WORD    API Minor Version
  294.  0Ch    DWORD    reserved for manufacturer's use
  295.  10h 22 BYTEs    manufacturer's ID
  296.  26h    WORD    highest possible device number
  297.  28h    WORD    maximum destinations per envelope
  298.  2Ah    WORD    maximum files per envelope
  299.  2Ch    WORD    FaxBIOS capabilities (see below)
  300.  2Eh    DWORD    T.30 capabilities (see below)
  301.  32h    WORD    IPC handle
  302.  34h    DWORD    amount of memory needed to load
  303.  38h    WORD    scope (00h for public, nonzero for private)
  304.  3Ah  6 BYTEs    future expansion
  305.  40h    WORD    structure size
  306.  
  307. Bitfields for FaxBIOS capabilities:
  308.  bit 0    transmit supported
  309.  bit 1    receive supported
  310.  bit 2    IOCTL supported
  311.  bit 3    IOCTL_DIAL supported
  312.  bit 4    IOCTL_ANSWER_FAX supported
  313.  bit 5    manual transmit supported
  314.  bit 6    optional phone services supported
  315.  bit 7    canonical phone objects
  316.  bit 8    seam with next supported
  317.  
  318. Bitfields for T.30 capabilities:
  319.  bit 0    low vertical resolution (minimum)
  320.  bit 1    high vertical resolution
  321.  bit 2    page width 107mm (4.21 in)
  322.  bit 3    page width 151mm (5.91 in)
  323.  bit 4    page width 215mm (8.46 in) (minimum)
  324.  bit 5    page width 255mm (10.04 in)
  325.  bit 6    page width 303mm (11.93 in)
  326.  bit 7    unused
  327.  bit 8    page length 297mm (11.69 in) (minimum)
  328.  bit 9    page length 364mm (14.33 in)
  329.  bit 10 page length 279mm (11 in)
  330.  bit 11 page length unlimited
  331.  bit 12 Group 4 resolution 300x300
  332.  bit 13 Group 4 resolution 400x400
  333.  bit 14 able to respond to poll from remote
  334.  bit 15 able to poll remote
  335.  bit 16 binary file transfer supported
  336.  
  337. Format of SYS_LOGOUT command buffer:
  338. Offset    Size    Description
  339.  00h    WORD    structure size
  340.  02h    WORD    function number
  341.  04h    WORD    return code
  342.  06h    WORD    client ID
  343.  08h    DWORD    client tag (for client's internal use)
  344.  0Ch  6 BYTEs    future expansion
  345.  12h    WORD    structure size
  346.  
  347. Format of SYS_GET_FAXAPP_INFO command buffer:
  348. Offset    Size    Description
  349.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  350.  0Ch 80 BYTEs    FaxBIOS data
  351.  5Ch 80 BYTEs    default cover
  352.  ACh 80 BYTEs    default logo
  353.  FCh 80 BYTEs    default signature
  354. 14Ch 80 BYTEs    default font 10
  355. 19Ch 80 BYTEs    default font 165
  356. 1ECh 80 BYTEs    default user font
  357. 23Ch 80 BYTEs    default Pdir
  358. 28Ch 80 BYTEs    default sort
  359. 2DCh 10 BYTEs    default bill
  360. 2E6h 10 BYTEs    default route
  361. 2F0h 40 BYTEs    default cover sheet form
  362. 318h 34 BYTEs    valid dial characters
  363. 33Ah  6 BYTEs    local country code
  364. 340h  6 BYTEs    local city or area code
  365. 346h  6 BYTEs    future expansion
  366. 34Ch    WORD    structure size
  367.  
  368. Format of STAT_IO_GET command buffer:
  369. Offset    Size    Description
  370.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  371.  0Ch    WORD    device number
  372.  0Eh    WORD    current activity
  373.  10h    WORD    number of rings (if ringing)
  374.  12h    WORD    number of fascimiles transmitted
  375.  14h    WORD    number of fascimiles received
  376.  16h    WORD    status of last transmission
  377.  18h    WORD    envelope number of last transmission
  378.  1Ah    WORD    index of last destination in envelope
  379.  1Ch    WORD    status of last reception
  380.  1Eh    WORD    current page (if session in progress)
  381.  20h 80 BYTEs    current file
  382.  70h104 BYTEs    remote number
  383.  D8h 20 BYTEs    last name
  384.  ECh 20 BYTEs    first name
  385. 100h 32 BYTEs    company name
  386. 120h 32 BYTEs    notes
  387. 140h    WORD    current envelope ID (if sending)
  388. 142h    WORD    total pages in transmission (if sending)
  389. 144h  6 BYTEs    future expansion
  390. 14h    WORD    structure size
  391.  
  392. Format of STAT_FAXBIOS_GET command buffer:
  393. Offset    Size    Description
  394.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  395.  0Ch    WORD    status ID
  396.  0Eh    WORD    currenty FaxBIOS function number
  397.  10h    WORD    current Client ID being serviced
  398.  12h    WORD    number of things to do
  399.  14h    WORD    number of them done
  400.  16h    WORD    number of pages to do (if any)
  401.  18h    WORD    number of them done
  402.  1Ah    WORD    number of files to do
  403.  1Ch    WORD    number of them done
  404.  1Eh 80 BYTEs    current File
  405.  6Eh    WORD    0 if all devices are idle
  406.  70h    WORD    number of fascimiles transmitted
  407.  72h    WORD    number of fascimiles received
  408.  74h    WORD    status of last transmission in system
  409.  76h    WORD    envelope ID of last transmission
  410.  78h    WORD    index of last destination in envelope
  411.  7Ah    WORD    status of last reception in system
  412.  7Ch    DWORD    time of next transmission
  413.  80h  6 BYTEs    future expansion
  414.  86h    WORD    structure size
  415.  
  416. Format of PDIR_OPEN command buffer:
  417. Offset    Size    Description
  418.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  419.  0Ch 80 BYTEs    Phone Directory token
  420.  5Ch 80 BYTEs    sort order token
  421.  ACh    WORD    open Mode (0 = read, 1 = write)
  422.  AEh    WORD    Phone Directory handle
  423.  B0h    WORD    number of people
  424.  B2h    WORD    number of groups
  425.  B4h    WORD    bitmap of fields supported by partial read
  426.  B6h  6 BYTEs    future expansion
  427.  BCh    WORD    structure size
  428.  
  429. Format of PDIR_CLOSE command buffer:
  430. Offset    Size    Description
  431.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  432.  0Ch    WORD    Phone Directory handle
  433.  0Eh  6 BYTEs    future expansion
  434.  14h    WORD    structure size
  435.  
  436. Format of PDIR_READ_PERSON command buffer:
  437. Offset    Size    Description
  438.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  439.  0Ch    WORD    Phone Directory handle
  440.  0Eh    WORD    retrieve by index
  441.  10h    WORD    person ID or index
  442.  12h    WORD    how many groups person is in
  443.  14h    WORD    person ID
  444.  16h 20 BYTEs    last name
  445.  2Ah 20 BYTEs    first name
  446.  3Eh 32 BYTEs    company
  447.  5Eh 32 BYTEs    notes
  448.  7Eh  6 BYTEs    FAX country code
  449.  84h  6 BYTEs    FAX city/area code
  450.  8Ah 14 BYTEs    FAX local number
  451.  98h 14 BYTEs    FAX extension
  452.  A6h 24 BYTEs    reserved
  453.  BEh  6 BYTEs    voice country code
  454.  C4h  6 BYTEs    voice city/area code
  455.  CAh 14 BYTEs    voice local number
  456.  D8h 14 BYTEs    voice extension
  457.  E6h 24 BYTEs    reserved
  458.  FEh 10 BYTEs    outbound routing information
  459. 108h 10 BYTEs    billing information, credit card etc
  460. 112h    DWORD    remote FAX capabilities
  461. 116h 21 BYTEs    T.30 poll code of FAX number
  462. 12Bh 15 BYTEs    reserved
  463. 13Ah  6 BYTEs    future expansion
  464. 140h    WORD    structure size
  465.  
  466. Format of SCHED_OPEN, SCHED_CANCEL command buffer:
  467. Offset    Size    Description
  468.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  469.  0Ch    WORD    scheduler handle
  470.  0Eh  6 BYTEs    future expansion
  471.  14h    WORD    structure size
  472.  
  473. Format of SCHED_ADD_DEST command buffer:
  474. Offset    Size    Description
  475.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  476.  0Ch    WORD    schedule handle
  477.  0Eh    WORD    device number if manual send wanted
  478.  10h    WORD    non-zero if poll desired
  479.  12h    WORD    person ID
  480.  14h 20 BYTEs    last name
  481.  28h 20 BYTEs    first name
  482.  3Ch 32 BYTEs    company
  483.  5Ch 32 BYTEs    notes
  484.  7Ch  6 BYTEs    FAX country code
  485.  82h  6 BYTEs    FAX city/area code
  486.  88h 14 BYTEs    FAX local number
  487.  96h 14 BYTEs    FAX extension
  488.  A4h 24 BYTEs    reserved
  489.  BCh  6 BYTEs    voice country code
  490.  C2h  6 BYTEs    voice city/area code
  491.  C8h 14 BYTEs    voice local number
  492.  D6h 14 BYTEs    voice extension
  493.  E4h 24 BYTEs    reserved
  494.  FCh 10 BYTEs    outbound routing information
  495. 106h 10 BYTEs    billing information, credit card etc
  496. 110h    DWORD    remote FAX capabilities
  497. 114h 21 BYTEs    T.30 poll code of FAX number
  498. 129h 15 BYTEs    reserved
  499. 138h  6 BYTEs    future expansion
  500. 13Eh    WORD    structure size
  501.  
  502. Format of SCHED_ADD_FILE command buffer:
  503. Offset    Size    Description
  504.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  505.  0Ch    WORD    schedule handle
  506.  0Eh    WORD    file type
  507.         0000h unidentified
  508.         0001h native file format
  509.         0002h ASCII
  510.         0003h FaxBIOS Tiff Class F
  511.  10h 80 BYTEs    file name
  512.  60h 80 BYTEs    font token
  513.  B0h    WORD    conversion options bitmap
  514.  B2h    WORD    resolution
  515.         0000h standard 98 lines per inch, 204 dpi
  516.         0001h fine 196 lines per inch, 204 dpi
  517.         0002h Group4 300 dpi
  518.         0003h Group4 400 dpi
  519.  B4h    WORD    page length
  520.         0000h 279 mm (11 in)
  521.         0001h 297 mm (11.69 in)
  522.         0002h 364 mm (14.33 in)
  523.         0003h unlimited
  524.  B6h    WORD    page width
  525.         0000h 215 mm (8.46 in)
  526.         0001h 255 mm (10.04 in)
  527.         0002h 303 mm (11.93 in)
  528.         0003h 151 mm (5.91 in)
  529.         0004h 107 mm (4.21 in)
  530.  B8h    WORD    binary file transfer specification
  531.         0000h only as FAX
  532.         0001h only as file (for non-faxable files)
  533.         0002h as file when possible else FAX
  534.  BAh    WORD    seam flag (nonzero for seam with next)
  535.  BCh    WORD    delete flag (nonzero to delete when done)
  536.  BEh  6 BYTEs    future expansion
  537.  C4h    WORD    structure size
  538.  
  539. Format of SCHED_SET_PARAMS command buffer:
  540. Offset    Size    Description
  541.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  542.  0Ch    WORD    scheduler handle
  543.  0Eh    DWORD    time to send
  544.  10h 10 BYTEs    priority token
  545.  1Ch 80 BYTEs    logo file token
  546.  6Ch 80 BYTEs    signature file token
  547.  BCh 80 BYTEs    cover page token
  548. 10Ch 40 BYTEs    Subject text
  549. 134h 40 BYTEs    From text
  550. 15Ch    WORD    user ID
  551. 15Eh  6 BYTEs    future expansion
  552. 164h    WORD    structure size
  553.  
  554. Format of SCHED_CLOSE command buffer:
  555. Offset    Size    Description
  556.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  557.  0Ch    WORD    scheduler handle
  558.  0Eh    WORD    envelope ID generated
  559.  10h  6 BYTEs    future expansion
  560.  16h    WORD    structure size
  561.  
  562. Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  563. Offset    Size    Description
  564.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  565.  0Ch    WORD    log handle
  566.  0Eh    WORD    number of entries
  567.  10h  6 BYTEs    future expansion
  568.  16h    WORD    structure size
  569.  
  570. Format of GRAPH_GET_FILE_TYPE command buffer:
  571. Offset    Size    Description
  572.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  573.  0Ch 80 BYTEs    filename
  574.  5Ch    WORD    file type
  575.         0000h unidentified
  576.         0001h native file format
  577.         0002h ASCII
  578.         0003h FaxBIOS Tiff Class F
  579.  5Eh    WORD    bitmap of supported capabilities
  580.  60h  6 BYTEs    future expansion
  581.  66h    WORD    structure size
  582.  
  583. Format of GRAPH_CREATE_FILE command buffer:
  584. Offset    Size    Description
  585.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  586.  0Ch 80 BYTEs    filename
  587.  5Ch    WORD    graph handle
  588.  5Eh  6 BYTEs    future expansion
  589.  64h    WORD    structure size
  590.  
  591. Format of GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  592. Offset    Size    Description
  593.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  594.  0Ch    WORD    graph handle
  595.  0Eh  6 BYTEs    future expansion
  596.  14h    WORD    structure size
  597.  
  598. Format of GRAPH_CREATE_PAGE command buffer:
  599. Offset    Size    Description
  600.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  601.  0Ch    WORD    graph handle
  602.  0Eh    WORD    resolution
  603.  10h    WORD    page width
  604.  12h  6 BYTEs    future expansion
  605.  18h    WORD    structure size
  606.  
  607. Format of GRAPH_WRITE_PAGE command buffer:
  608. Offset    Size    Description
  609.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  610.  0Ch    WORD    graph handle
  611.  0Eh    DWORD    pointer to storage for image
  612.  12h    WORD    band height in lines
  613.  14h    WORD    width of page image in bytes
  614.  16h    WORD    facsimile page width constant
  615.  18h    WORD    width of page image in bits
  616.  1Ah    WORD    number of bytes actually processed
  617.  1Ch  6 BYTEs    future expansion
  618.  22h    WORD    structure size
  619.  
  620. Format of GRAPH_OPEN_FILE command buffer:
  621. Offset    Size    Description
  622.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  623.  0Ch 80 BYTEs    filename
  624.  5Ch    WORD    file type
  625.  5Eh    WORD    graph handle
  626.  60h    WORD    number of pages
  627.  62h  6 BYTEs    future expansion
  628.  68h    WORD    structure size
  629.  
  630. Format of GRAPH_GOTO_PAGE command buffer:
  631. Offset    Size    Description
  632.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  633.  0Ch    WORD    graph handle
  634.  0Eh    WORD    page number
  635.  10h    WORD    vertical resolution
  636.  12h    WORD    page width
  637.  14h    DWORD    page length
  638.  18h  6 BYTEs    future expansion
  639.  1Eh    WORD    structure size
  640.  
  641. Format of GRAPH_READ_PAGE command buffer:
  642. Offset    Size    Description
  643.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  644.  0Ch    WORD    graph handle
  645.  0Eh    DWORD    pointer to storage for image
  646.  12h    WORD    band height in lines
  647.  14h    WORD    width of page image in bytes
  648.  16h    WORD    facsimile page width constant
  649.  18h    WORD    width of page image in bits
  650.  1Ah    WORD    number of bytes actually processed
  651.  1Ch  6 BYTEs    future expansion
  652.  22h    WORD    structure size
  653.  
  654. Format of IOCTL_ANSWER_FAX command buffer:
  655. Offset    Size    Description
  656.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  657.  0Ch    WORD    device number
  658.  0Eh  6 BYTEs    future expansion
  659.  14h    WORD    structure size
  660.  
  661. Format of IOCTL_DIAL command buffer:
  662. Offset    Size    Description
  663.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  664.  0Ch    WORD    device number
  665.  0Eh  6 BYTEs    country code
  666.  14h  6 BYTEs    city or area code
  667.  1Ah 14 BYTEs    local number
  668.  28h 14 BYTEs    extension
  669.  36h 14 BYTEs    reserved
  670.  4Eh  6 BYTEs    future expansion
  671.  54h    WORD    structure size
  672. --------N-2F8100-----------------------------
  673. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  674.     AX = 8100h
  675. Return: AL = FFh if installed
  676. Program: TurboNET is a NetBIOS-based file redirector and server; a
  677.       demonstration version may be downloaded from Nanosoft's BBS
  678. SeeAlso: AX=8000h"TurboNET"
  679. --------N-2F8101-----------------------------
  680. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  681.     AX = 8101h
  682. Return: AL = ???
  683.     DL = ???
  684. --------N-2F8102-----------------------------
  685. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  686.     AX = 8102h
  687. Return: AL = ???
  688.     DL = ???
  689. --------N-2F8103-----------------------------
  690. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  691.     AX = 8103h
  692.     ES:DI -> 17-byte buffer
  693. Return: buffer filled
  694. --------N-2F8104-----------------------------
  695. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  696.     AX = 8104h
  697.     BL = ???
  698.     BH = ???
  699.     CX = ???
  700.     DX = ???
  701.     DS:SI -> 16-byte buffer containing ???
  702. Return: AL = 00h ???
  703. --------N-2F8105-----------------------------
  704. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  705.     AX = 8105h
  706.     CX = ??? (don't change current value if 0000h)
  707.     DX = ??? (don't change current value if 0000h)
  708. Return: AL = 00h successful
  709. --------s-2F8200-----------------------------
  710. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  711.     AX = 8200h
  712.     DX:DI -> start of sample space
  713.     CX:BX = length in bytes
  714. Return: AX = status
  715.         1000h successful
  716.         2000h not initialized (see AX=8210h)
  717.         other RESPLAY not installed
  718. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  719. SeeAlso: AX=8201h,AX=8210h
  720. --------G-2F8200-----------------------------
  721. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  722.     AX = 8200h
  723. Return: AL = FFh if installed
  724. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  725.       captured and recorded for later analysis
  726. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  727. SeeAlso: AX=8204h"CAPDOS"
  728. --------s-2F8201-----------------------------
  729. INT 2F - RESPLAY - INSTALLATION CHECK
  730.     AX = 8201h
  731. Return: AX = 7746h if installed
  732. SeeAlso: AX=8202h
  733. --------G-2F8201-----------------------------
  734. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  735.     AX = 8201h
  736. Note:    resets queue of captured INT 21 calls
  737. SeeAlso: AX=8200h"CAPDOS"
  738. --------s-2F8202-----------------------------
  739. INT 2F - RESPLAY - UNINSTALL
  740.     AX = 8202h
  741. Return: AX = status
  742.         1000h successful
  743. SeeAlso: AX=8201h
  744. --------G-2F8202-----------------------------
  745. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  746.     AX = 8202h
  747. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  748. --------G-2F8203-----------------------------
  749. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  750.     AX = 8203h
  751. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  752. --------G-2F8204-----------------------------
  753. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  754.     AX = 8204h
  755. Return: AH = flag: queue wrapped if nonzero
  756.     BX = index of current start of queue
  757.     CX = size of queue in entries
  758. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  759. --------G-2F8205-----------------------------
  760. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  761.     AX = 8205h
  762.     BX = queue item number
  763. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  764. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  765. --------s-2F8210-----------------------------
  766. INT 2F - RESPLAY - INITIALIZE
  767.     AX = 8210h
  768.     BL = sound device
  769.         00h printer port LPT1
  770.         01h printer port LPT2
  771.         02h prototype board at I/O address 0300h
  772.         03h printer port (alternative LPT1)
  773.         04h internal speaker
  774.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  775.     CL = direction
  776.         00h playback
  777.         01h sample
  778. Return: AX = status
  779.         1000h successful
  780.         2000h parameter out of range
  781.         other RESPLAY not installed
  782. SeeAlso: AX=8200h
  783. ----------2F86-------------------------------
  784. INT 2F U - ???
  785.     AH = 86h
  786.     AL = function (at least 06h and 07h)
  787.     ???
  788. Return: ???
  789. Note:    called by Codeview for Windows
  790. SeeAlso: AH=44h
  791. --------U-2F8900-----------------------------
  792. INT 2F - WHOA!.COM - INSTALLATION CHECK
  793.     AX = 8900h
  794. Return: AL = 00h not installed
  795.        = FFh installed
  796. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  797. SeeAlso: AX=8901h,AX=8902h
  798. --------U-2F8901-----------------------------
  799. INT 2F - WHOA!.COM - UNINSTALL
  800.     AX = 8901h
  801. Return: AL = FDh successful
  802.        = FEh error
  803. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  804. SeeAlso: AX=8900h
  805. --------U-2F8902-----------------------------
  806. INT 2F - WHOA!.COM - SET DELAY COUNT
  807.     AX = 8902h
  808.     BX = delay count (larger values slow system down more)
  809. Return: AL = FDh successful
  810.        = FEh error
  811. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  812. SeeAlso: AX=8900h
  813. --------U-2F9000-----------------------------
  814. INT 2F U - RAID - INSTALLATION CHECK
  815.     AX = 9000h
  816. Return: AL = FFh if installed
  817. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  818.       that resides mostly in EMS
  819. --------U-2F9001-----------------------------
  820. INT 2F U - RAID - GET ???
  821.     AX = 9001h
  822. Return: DX:AX -> ???
  823. SeeAlso: AX=9000h
  824. --------U-2F9002-----------------------------
  825. INT 2F U - RAID - GET RESIDENT SEGMENT
  826.     AX = 9002h
  827. Return: AX = segment of resident (conventional memory) portion
  828. SeeAlso: AX=9000h
  829. --------U-2F9003-----------------------------
  830. INT 2F U - RAID - UNINSTALL
  831.     AX = 9003h
  832. Return: ???
  833. SeeAlso: AX=9000h
  834. --------U-2F9004-----------------------------
  835. INT 2F U - RAID - GET ???
  836.     AX = 9004h
  837. Return: AX = first available paragraph past end of resident portion???
  838.     CX destroyed
  839. SeeAlso: AX=9000h
  840. --------e-2F92-------------------------------
  841. INT 2F - Network Courier E-Mail - API
  842.     AH = 92h
  843.     AL = function
  844.         00h installation check
  845.         01h uninstall
  846.         02h pop down MICRO.EXE notification window
  847.         03h ???
  848.         04h ???
  849.         05h ???
  850. Return: ???
  851. Program: The Network Courier is an electronic mail package by Consumers
  852.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  853.       renamed Microsoft Mail v3.0.
  854. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  855. Index:    installation check;Network Courier E-Mail
  856. Index:    uninstall;Network Courier E-Mail
  857. --------R-2F9200-----------------------------
  858. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  859.     AX = 9200h
  860. Program: DRIVEMAP is a redirector which allows drives on computers connected
  861.       over the parallel or serial ports to appear as local drives
  862. BUG:    jumps to data because jump table entry is 0000h
  863. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  864. --------R-2F9201-----------------------------
  865. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  866.     AX = 9201h
  867.     DL = drive number (01h = A:, etc.)
  868. Return: AL = 92h if mapped drive
  869.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  870. SeeAlso: AX=9204h,AX=920Bh
  871. --------R-2F9202-----------------------------
  872. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  873.     AX = 9202h
  874.     BX = caller's CS
  875. Return: AX = status
  876.         0000h failed
  877.         nonzero successful
  878. SeeAlso: AX=9204h
  879. --------R-2F9203-----------------------------
  880. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  881.     AX = 9203h
  882. Return: AH = major version
  883.     AL = minor version
  884.     CX = segment of resident code
  885. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  886. SeeAlso: AX=9204h,INT 16/AX=FF70h
  887. --------R-2F9204-----------------------------
  888. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  889.     AX = 9204h
  890. Return: AX = 9200h if installed
  891.        BL = ???
  892.        CX = segment of resident code
  893. Program: DRIVEMAP is a redirector which allows drives on computers connected
  894.       over the parallel or serial ports to appear as local drives
  895. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  896. --------R-2F9205-----------------------------
  897. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  898.     AX = 9205h
  899.     BX = ??? to set
  900. Return: CX = new value of ???
  901. --------R-2F9206-----------------------------
  902. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  903.     AX = 9206h
  904.     ???
  905. Return: ???
  906. --------R-2F9207-----------------------------
  907. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  908.     AX = 9207h
  909.     ???
  910. Return: AX = ???
  911. --------R-2F9208-----------------------------
  912. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  913.     AX = 9208h
  914.     ???
  915. Return: ???
  916. --------R-2F9209-----------------------------
  917. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  918.     AX = 9209h
  919.     ???
  920. Return: AX = ???
  921.     BX = ???
  922.     CX = ???
  923.     DX = ???
  924. --------R-2F920A-----------------------------
  925. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  926.     AX = 920Ah
  927.     BX = ???
  928. Return: AX = ??? or FFFBh on error
  929. --------R-2F920B-----------------------------
  930. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  931.     AX = 920Bh
  932.     BL = drive letter (41h ['A'] = A:, etc)
  933.     CX = ??? (0000h removes mapping)
  934. Return: AX = ??? or FFF8h on error
  935. SeeAlso: AX=9201h,AX=920Dh
  936. --------R-2F920C-----------------------------
  937. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  938.     AX = 920Ch
  939.     ???
  940. Return: AX = ??? (0002h)
  941.     CX = ??? (0000h)
  942. --------R-2F920D-----------------------------
  943. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  944.     AX = 920Dh
  945.     BL = drive letter (41h ['A'] = A:, etc)
  946. Return: AX = type flags
  947.         bit 0: ???
  948.         bit 1: available
  949.         bit 5: local
  950.     BX = ???
  951.     CX = segment of resident code (apparently an unintended side effect)
  952. Program: DRIVEMAP is a redirector which allows drives on computers connected
  953.       over the parallel or serial ports to appear as local drives
  954. SeeAlso: AX=9218h,INT 16/AX=FF70h
  955. --------R-2F920E-----------------------------
  956. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  957.     AX = 920Eh
  958.     BX = port number (0-2)
  959.     CX = ??? (0000h to unmap)
  960. Return: ???
  961. --------R-2F920F-----------------------------
  962. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  963.     AX = 920Fh
  964.     ES:DI -> 3-byte buffer for ???
  965. Return: CX = 0000h
  966.     ES:DI buffer filled
  967. --------R-2F9210-----------------------------
  968. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  969.     AX = 9210h
  970.     ???
  971. Return: ???
  972. --------R-2F9211-----------------------------
  973. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  974.     AX = 9211h
  975.     ES:DI -> 8-word buffer for ???
  976. Return: CX = 0000h
  977.     ES:DI buffer filled
  978. --------R-2F9212-----------------------------
  979. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  980.     AX = 9212h
  981.     BX = phase
  982.         0000h leave critical section???
  983.         nonzero enter critical section???
  984. --------R-2F9213-----------------------------
  985. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  986.     AX = 9213h
  987.     BX = function number (0000h-000Bh)
  988.     ???
  989. Return: ???
  990. --------R-2F9214-----------------------------
  991. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  992.     AX = 9214h
  993.     ES:DI -> 6-word buffer for ???
  994. Return: CX = 0000h
  995.     AX = ???
  996.     ES:DI buffer filled
  997. --------R-2F9215-----------------------------
  998. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  999.     AX = 9215h
  1000.     ES:DI -> 100-word buffer for ???
  1001. Return: CX = 0000h
  1002.     ES:DI buffer filled
  1003. --------R-2F9216-----------------------------
  1004. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1005.     AX = 9216h
  1006.     ES:DI -> ???
  1007. Return: ???
  1008. --------R-2F9217-----------------------------
  1009. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1010.     AX = 9217h
  1011.     DS:SI -> 25-word buffer containing ???
  1012. Return: ???
  1013. --------R-2F9218-----------------------------
  1014. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  1015.     AX = 9218h
  1016.     BX = port number???
  1017. Return: AX = ???
  1018.     BX = ??? (0000h)
  1019.     CX = ??? (0000h)
  1020. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1021.       over the parallel or serial ports to appear as local drives
  1022. --------R-2F9219-----------------------------
  1023. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1024.     AX = 9219h
  1025.     ???
  1026. Return: ???
  1027. --------R-2F921A-----------------------------
  1028. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1029.     AX = 921Ah
  1030.     ???
  1031. Return: AH = ???
  1032.     AL = ???
  1033.     BX = ???
  1034. --------R-2F921B-----------------------------
  1035. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1036.     AX = 921Bh
  1037.     ???
  1038. Return: AX = ???
  1039.     CX = segment of resident code (apparently an unintended side effect)
  1040. --------R-2F921C-----------------------------
  1041. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1042.     AX = 921Ch
  1043.     ???
  1044. Return: ???
  1045. --------R-2F921D-----------------------------
  1046. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1047.     AX = 921Dh
  1048. Return: AX = ???
  1049. --------R-2F921E-----------------------------
  1050. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1051.     AX = 921Eh
  1052.     ???
  1053. Return: ???
  1054. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1055.       over the parallel or serial ports to appear as local drives
  1056. Note:    this function sets two variables to 24h each
  1057. SeeAlso: INT 16/AX=FF70h
  1058. --------V-2F93-------------------------------
  1059. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  1060.     AH = 93h
  1061.     BX = CX = AX
  1062. Return: AL = FFh if installed and BX=CX=AX on entry
  1063.         BX = segment of resident code
  1064.        = 01h if installed but BX or CX differ from AX
  1065. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  1066. Index:    screen saver;InnerMission
  1067. --------e-2F9400-----------------------------
  1068. INT 2F - MICRO.EXE - INSTALLATION CHECK
  1069.     AX = 9400h
  1070. Return: AL = 07h or 08h if installed
  1071. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  1072. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  1073. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  1074. --------e-2F9401-----------------------------
  1075. INT 2F - MICRO.EXE - SET ??? FLAG
  1076.     AX = 9401h
  1077. SeeAlso: AX=9400h,AX=9403h
  1078. --------e-2F9402-----------------------------
  1079. INT 2F - MICRO.EXE - ???
  1080.     AX = 9402h
  1081.     ???
  1082. Return: ???
  1083. SeeAlso: AX=9400h
  1084. --------e-2F9403-----------------------------
  1085. INT 2F - MICRO.EXE - SET ??? FLAG
  1086.     AX = 9403h
  1087. SeeAlso: AX=9400h,AX=9404h
  1088. --------e-2F9404-----------------------------
  1089. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  1090.     AX = 9404h
  1091.     ES:DI -> name of executable from which MICRO.EXE was started
  1092. Note:    if the specified name is identical to the name of the program file
  1093.       from which MICRO was started, the ??? flag is cleared; otherwise,
  1094.       it is left unchanged
  1095. SeeAlso: AX=9400h,AX=9403h
  1096. --------e-2F9C-------------------------------
  1097. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  1098.     AH = 9Ch
  1099.     AL = subfunction
  1100.         01h uninstall
  1101. Return: ???
  1102. Program: The Network Courier is an electronic mail package by Consumers
  1103.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  1104.       renamed Microsoft Mail v3.0.
  1105. SeeAlso: AH=92h
  1106. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  1107. --------G-2F9E00-----------------------------
  1108. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  1109.     AX = 9E00h
  1110. Return: AX = FFFFh if installed
  1111.         BX = segment of resident code
  1112. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  1113.       and higher machines by Celso Minnitti, Jr.
  1114. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  1115. --------G-2F9E01-----------------------------
  1116. INT 2F U - INTMON v2.1 - RESET
  1117.     AX = 9E01h
  1118. Return: ???
  1119. Desc:    this function specifies that INTMON should assume that any interrupts
  1120.       on which it is currently awaiting a return have completed (i.e.
  1121.       interrupts which never return such as INT 20 and INT 27)
  1122. SeeAlso: AX=9E00h,AX=9E03h
  1123. --------G-2F9E02-----------------------------
  1124. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  1125.     AX = 9E02h
  1126. Return: ???
  1127. SeeAlso: AX=9E00h
  1128. --------G-2F9E03-----------------------------
  1129. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  1130.     AX = 9E03h
  1131.     BH = interrupt number???
  1132. Return: ???
  1133. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  1134. SeeAlso: AX=9E00h,AX=9E01h
  1135. --------G-2F9F00-----------------------------
  1136. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  1137.     AX = 9F00h
  1138. Return: AX = FFFFh if installed
  1139. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  1140.       Minnitti, Jr.
  1141. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  1142. --------G-2F9F01-----------------------------
  1143. INT 2F U - INTCFG v2.1 - ???
  1144.     AX = 9F01h
  1145.     ???
  1146. Return: ???
  1147. SeeAlso: AX=9F00h
  1148. --------G-2F9F30-----------------------------
  1149. INT 2F U - INTCFG v2.1 - GET ???
  1150.     AX = 9F30h
  1151. Return: AX = ??? (0002h)
  1152. SeeAlso: AX=9F00h
  1153. --------G-2F9F49-----------------------------
  1154. INT 2F U - INTCFG v2.1 - UNINSTALL
  1155.     AX = 9F49h
  1156. Return: AX,DX,DS,ES destroyed
  1157. SeeAlso: AX=9F00h
  1158. --------E-2FA1--BX0081-----------------------
  1159. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  1160.     AH = A1h
  1161.     BX = 0081h
  1162.     AL = which
  1163.         FEh OS/286,OS/386
  1164.         FFh HummingBoard DOS extender
  1165.     ES:DI -> 16-byte buffer
  1166. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  1167. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  1168.       BX=0082h and BX=0084h are present and function identically to the
  1169.       AX=FBA1h/BX=008xh calls
  1170. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  1171. --------m-2FA189-----------------------------
  1172. INT 2F U - Biologic HRAMDEV.SYS - API
  1173.     AX = A189h
  1174.     BX = subfunction
  1175.         0000h set ???
  1176.         0001h remove ???
  1177.         0002h get status ???
  1178.         0003h enable ???
  1179.         0004h disable ???
  1180.         0005h set ??? flag
  1181.         0006h clear ??? flag
  1182.         0007h set ??? flag
  1183.         0008h clear ??? flag
  1184.         0009h set ???
  1185.     ES:DI -> function-specific arguments
  1186.         if func 0000h: 20-byte buffer containing ???
  1187.         if func 0001h: 20-byte buffer for returned ???
  1188.         if func 0002h: 16-byte buffer for returned ???
  1189.         if func 0009h: WORD containing ???
  1190. Return: BX = A189h if installed
  1191.     AH = status
  1192.         00h successful
  1193.         FFh failed or invalid function number
  1194. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  1195.       provides improved high memory access under MS-DOS 5.0
  1196. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  1197.       removes the values stored with the most recent function 00h call
  1198.       which has not yet been matched with a function 01h call.
  1199. --------U-2FA4E0-----------------------------
  1200. INT 2F - Futurus Team - INSTALLATION CHECK
  1201.     AX = A4E0h
  1202. Return: AL = 52h ("R") if installed
  1203.         AH = major version plus 30h ("0")
  1204.         ES:BX -> ??? (INT A4 handler???)
  1205. Note:    older versions of Right Hand Man (from which Team evolved) store the
  1206.       signature "RH" at offset 103h in the INT 2F handler's segment
  1207. SeeAlso: INT A4"Right Hand Man"
  1208. --------U-2FA900-----------------------------
  1209. INT 2F - METZTSR.COM - INSTALLATION CHECK
  1210.     AX = A900h
  1211.     CF set
  1212. Return: CF clear if resident
  1213.         AX = 97FFh
  1214.     CF set if not present
  1215. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  1216.       saver) inactivity timeout while running a DOSapp under MS Windows.
  1217.     the default multiplex number is A9h, but may be set to any value from
  1218.       80h to FFh with a commandline switch
  1219. SeeAlso: AX=A901h,AX=A902h
  1220. --------U-2FA901-----------------------------
  1221. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  1222.     AX = A901h
  1223.     CF set
  1224. Return: CF clear if successful
  1225.         AX:DX = BIOS time at which INT 09 was last invoked
  1226.     CF set if not present
  1227. SeeAlso: INT 09,INT 1A/AH=00h
  1228. --------U-2FA902-----------------------------
  1229. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  1230.     AX = A902h
  1231.     BL = new value
  1232.         00h Ctrl-Alt-Del not allowed
  1233.         else Ctrl-Alt-Del allowed (startup default is 01h)
  1234.     CF set
  1235. Return: CF clear if successful
  1236.         AX = 97FFh
  1237.     CF set if not resident
  1238. SeeAlso: AX=A903h
  1239. --------U-2FA903-----------------------------
  1240. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  1241.     AX = A903h
  1242.     CF set
  1243. Return: CF clear if successful
  1244.         AX = 97FFh if Ctrl-Alt-Del allowed
  1245.         AX = 0000h if Ctrl-Alt-Del not allowed
  1246.     CF set if not resident
  1247. SeeAlso: AX=A902h
  1248. --------U-2FAA00-----------------------------
  1249. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  1250.     AX = AA00h
  1251. Return: AL = 00h not installed
  1252.          FFh installed
  1253. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  1254. --------f-2FAB00-----------------------------
  1255. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  1256.     AX = AB00h
  1257. Return: AL = 4Dh if installed
  1258. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  1259. --------f-2FAB01-----------------------------
  1260. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  1261.     AX = AB01h
  1262.     BX = process ID
  1263.     DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
  1264. Return: AL = 00h OK
  1265.        = other retry after calling INT 7F/AX=0200h
  1266. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  1267. --------f-2FAB02-----------------------------
  1268. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  1269.     AX = AB02h
  1270. Return: AL = 00h successful
  1271.         BX = process ID
  1272.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  1273. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  1274. --------V-2FAC00-----------------------------
  1275. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  1276.     AX = AC00h
  1277. Return: AX = FFFFh
  1278.     ES:DI -> ??? (graphics data?) (not documented)
  1279. Note:    this installation check was moved here to avoid the conflict with the
  1280.       CD-ROM extensions that occurred in DOS 4.00
  1281. SeeAlso: AX=1500h"GRAPHICS"
  1282. --------V-2FAD00-----------------------------
  1283. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  1284.     AX = AD00h
  1285. Return: AL = FFh if installed
  1286.         BX = ??? (0100h for MS-DOS 3.3+)
  1287. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  1288.       subfunctions listed here
  1289. --------O-2FAD00-----------------------------
  1290. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  1291.     AX = AD00h
  1292. Return: AX = FFFFh if installed
  1293. SeeAlso: AX=AD80h
  1294. --------V-2FAD01-----------------------------
  1295. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  1296.     AX = AD01h
  1297.     BX = new code page
  1298. Return: CF clear if successful
  1299.         AX = 0001h
  1300.     CF set on error (unsupported code page)
  1301.         AX = 0000h
  1302. SeeAlso: AX=AD02h
  1303. --------O-2FAD01-----------------------------
  1304. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  1305.     AX = AD01h
  1306. Return: BX = current code page
  1307.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  1308.     ES = resident code segment
  1309. SeeAlso: AX=AD83h
  1310. --------V-2FAD02-----------------------------
  1311. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  1312.     AX = AD02h
  1313. Return: CF set if code page never set
  1314.         AX = 0001h
  1315.         BX = FFFFh (assume first hardware code page)
  1316.     CF clear if successful
  1317.         BX = current code page
  1318. SeeAlso: AX=AD01h,AX=AD03h
  1319. --------V-2FAD03-----------------------------
  1320. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  1321.     AX = AD03h
  1322.     ES:DI -> buffer for code page information (see below)
  1323.     CX = size of buffer in bytes
  1324. Return: CF set if buffer too small
  1325.     CF clear if successful
  1326.         ES:DI buffer filled
  1327. SeeAlso: AX=AD01h,AX=AD02h
  1328.  
  1329. Format of DOS 5.0-6.0 code page information:
  1330. Offset    Size    Description
  1331.  00h    WORD    number of software code pages
  1332.  02h    WORD    ??? (0003h)
  1333.  04h    WORD    number of hardware code pages
  1334.  06h  N WORDs    hardware code page numbers
  1335.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  1336. --------V-2FAD04-----------------------------
  1337. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  1338.     AX = AD04h
  1339.     ???
  1340. Return: ???
  1341. --------V-2FAD10-----------------------------
  1342. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  1343.     AX = AD10h
  1344.     ???
  1345. Return: AX = FFFFh
  1346.     BX = ??? (0100h in PC-DOS 4.01)
  1347. --------V-2FAD10-----------------------------
  1348. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  1349.     AX = AD10h
  1350.     ???
  1351. Return: CF clear if successful
  1352.     CF set on error
  1353. Note:    this function is a NOP if the active code page has never been set
  1354.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  1355. --------V-2FAD40-----------------------------
  1356. INT 2F - DOS 4+ - ???
  1357.     AX = AD40h
  1358.     DX = ???
  1359.     ???
  1360. Return: ???
  1361. Note:    called by PC-DOS 4.01 PRINT.COM
  1362. --------K-2FAD80-----------------------------
  1363. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  1364.     AX = AD80h
  1365. Return: AL = FFh if installed
  1366.         BX = version number (BH = major, BL = minor)
  1367.         ES:DI -> internal data (see below)
  1368. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  1369.     undocumented prior to the release of DOS 5.0
  1370.  
  1371. Format of KEYB internal data:
  1372. Offset    Size    Description
  1373.  00h    DWORD    original INT 09
  1374.  04h    DWORD    original INT 2F
  1375.  08h  6 BYTEs    ???
  1376.  0Eh    WORD    flags
  1377.  10h    BYTE    ???
  1378.  11h    BYTE    ???
  1379.  12h  4 BYTEs    ???
  1380.  16h  2 BYTEs    country ID letters
  1381.  18h    WORD    current code page
  1382. ---DOS 3.3---
  1383.  1Ah    WORD    pointer to first item in list of code page tables???
  1384.  1Ch    WORD    pointer to ??? item in list of code page tables
  1385.  1Eh  2 BYTEs    ???
  1386.  20h    WORD    pointer to key translation data
  1387.  22h    WORD    pointer to last item in code page table list (see below)
  1388.  24h  9 BYTEs    ???
  1389. ---DOS 4.01---
  1390.  1Ah  2 BYTEs    ???
  1391.  1Ch    WORD    pointer to first item in list of code page tables???
  1392.  1Eh    WORD    pointer to ??? item in list of code page tables
  1393.  20h  2 BYTEs    ???
  1394.  22h    WORD    pointer to key translation data
  1395.  24h    WORD    pointer to last item in code page table list (see below)
  1396.  26h  9 BYTEs    ???
  1397.  
  1398. Format of code page table list entries:
  1399. Offset    Size    Description
  1400.  00h    WORD    pointer to next item, FFFFh = last
  1401.  02h    WORD    code page
  1402.  04h  2 BYTEs    ???
  1403.  
  1404. Format of translation data:
  1405. Offset    Size    Description
  1406.  00h    WORD    size of data in bytes, including this word
  1407.  02h N-2 BYTEs    ???
  1408. --------K-2FAD81-----------------------------
  1409. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  1410.     AX = AD81h
  1411.     BX = code page (see INT 21/AX=6601h)
  1412. Return: CF set on error
  1413.         AX = 0001h (code page not available)
  1414.     CF clear if successful
  1415. Notes:    called by DISPLAY.SYS
  1416.     undocumented prior to the release of DOS 5.0
  1417. SeeAlso: AX=AD82h
  1418. --------K-2FAD82-----------------------------
  1419. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  1420.     AX = AD82h
  1421.     BL = new state
  1422.         00h US keyboard (Control-Alt-F1)
  1423.         FFh foreign keyboard (Control-Alt-F2)
  1424. Return: CF set on error (BL not 00h or FFh)
  1425.     CF clear if successful
  1426. Note:    undocumented prior to the release of DOS 5.0
  1427. SeeAlso: AX=AD81h,AX=AD83h
  1428. --------K-2FAD83-----------------------------
  1429. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  1430.     AX = AD83h
  1431. Return: BL = current state
  1432.         00h US keyboard
  1433.         FFh foreign keyboard
  1434. SeeAlso: AX=AD82h
  1435. --------l-2FAE00DXFFFF-----------------------
  1436. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  1437.     AX = AE00h
  1438.     DX = FFFFh
  1439.     CH = FFh
  1440.     CL = length of command line tail (4DOS v4.0)
  1441.     DS:BX -> command line buffer (see below)
  1442.     DS:SI -> command name buffer (see below)
  1443.     DI = 0000h (4DOS v4.0)
  1444. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  1445.     AL = 00h if the command should be executed as usual
  1446. Notes:    This call provides a mechanism for TSRs to install permanent
  1447.       extensions to the command repertoire of COMMAND.COM.    It appears
  1448.       that COMMAND.COM makes this call before executing the current
  1449.       command line, and does not execute it itself if the return is FFh.
  1450.     APPEND hooks this call, to allow subsequent APPEND commands to
  1451.       execute without re-running APPEND
  1452.  
  1453. Format of command line buffer:
  1454. Offset    Size    Description
  1455.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  1456.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  1457.       N BYTEs    command line text, terminated by 0Dh
  1458.  
  1459. Format of command name buffer:
  1460. Offset    Size    Description
  1461.  00h    BYTE    length of command name
  1462.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  1463. --------l-2FAE01DXFFFF-----------------------
  1464. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  1465.     AX = AE01h
  1466.     DX = FFFFh
  1467.     CH = 00h
  1468.     CL = length of command name (4DOS v4.0)
  1469.     DS:SI -> command name buffer (see AX=AE00h)
  1470.     DS:BX -> command line buffer (see AX=AE00h)
  1471. Return: DS:SI buffer updated
  1472.       if length byte is nonzero, the following bytes contain the uppercase
  1473.       internal command to execute and the command line buffer contains the
  1474.       command's parameters (the first DS:[SI] bytes are ignored)
  1475. Notes:    this call requests execution of the command which a previous call to
  1476.       AX=AE00h indicated was resident
  1477.     APPEND hooks this call
  1478. ----------2FAF-------------------------------
  1479. INT 2F U - ???
  1480.     AH = AFh
  1481.     ???
  1482. Return: ???
  1483. --------V-2FB000-----------------------------
  1484. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  1485.     AX = B000h
  1486. Return: AL = status
  1487.         00h not installed, OK to install
  1488.         01h not installed, not OK to install
  1489.         FFh installed
  1490. Notes:    called by DISPLAY.SYS
  1491.     documented for DOS 5.0, but undocumented in prior versions
  1492. SeeAlso: AX=B001h
  1493. --------V-2FB001-----------------------------
  1494. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  1495.     AX = B001h
  1496.     DS:BX -> DWORD buffer for address of 8x8 font table
  1497. Return: buffer filled
  1498.     AL = FFh
  1499. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  1500.       MS-DOS 3.30 sets it to 0030h
  1501. SeeAlso: AX=B000h
  1502. --------I-2FB400-----------------------------
  1503. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  1504.     AX = B400h
  1505. Return: AL = FFh if installed
  1506. --------I-2FB401-----------------------------
  1507. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  1508.     AX = B401h
  1509. Return: ES -> host screen buffer (PC ASCII format)
  1510.     ES unchanged if communications not started
  1511. --------I-2FB402-----------------------------
  1512. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1513.     AX = B402h
  1514.     BX = ???
  1515. Return: ???
  1516. --------I-2FB403-----------------------------
  1517. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1518.     AX = B403h
  1519.     ???
  1520. Return: ???
  1521. --------I-2FB404-----------------------------
  1522. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1523.     AX = B404h
  1524.     ???
  1525. Return: ???
  1526. --------I-2FB405-----------------------------
  1527. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1528.     AX = B405h
  1529.     ???
  1530. Return: ???
  1531. ----------2FB700-----------------------------
  1532. INT 2F - APPEND - INSTALLATION CHECK
  1533.     AX = B700h
  1534. Return: AL = status
  1535.         00h not installed
  1536.         FFh installed
  1537. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  1538.       a TopView-compatible environment
  1539. ----------2FB701-----------------------------
  1540. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  1541.     AX = B701h
  1542. Return: ES:DI -> active APPEND path
  1543. Notes:    the only version of APPEND known to support this call is the APPEND
  1544.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  1545.       "Incorrect APPEND Version" and aborts the caller
  1546.     use AX=B704h first, and only call this function if that one is not
  1547.       supported
  1548. SeeAlso: AX=B704h
  1549. ----------2FB702-----------------------------
  1550. INT 2F - APPEND - VERSION CHECK
  1551.     AX = B702h
  1552. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  1553.     AL = major version number
  1554.     AH = minor version number, otherwise
  1555. SeeAlso: AX=B710h
  1556. ----------2FB703-----------------------------
  1557. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  1558.     AX = B703h
  1559.     ES:DI -> INT 21 handler APPEND should chain to
  1560. Return: ES:DI -> APPEND's INT 21 handler
  1561. Note:    each invocation of this function toggles a flag which APPEND uses to
  1562.       determine whether to chain to the user handler or the original
  1563.       INT 21
  1564. ----------2FB704-----------------------------
  1565. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  1566.     AX = B704h
  1567. Return: ES:DI -> active APPEND path (128 bytes max)
  1568. Note:    some versions of append do not support this call, and return ES
  1569.       unchanged; in this case, you should call AX=B701h to get the APPEND
  1570.       path
  1571. SeeAlso: AX=B701h
  1572. ----------2FB706-----------------------------
  1573. INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  1574.     AX = B706h
  1575. Return: BX = APPEND state
  1576.         bit 0: set if APPEND enabled
  1577.         bits 1-11 reserved
  1578.         bit 12: (DOS 5.0) set if APPEND applies directory search even if a
  1579.             drive has been specified
  1580.         bit 13: set if /PATH flag active
  1581.         bit 14: set if /E flag active (environment var APPEND exists)
  1582.         bit 15: set if /X flag active
  1583. ----------2FB707-----------------------------
  1584. INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  1585.     AX = B707h
  1586.     BX = APPEND state bits (see AX=B706h)
  1587. ----------2FB710-----------------------------
  1588. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  1589.     AX = B710h
  1590. Return: AX = current APPEND state (see AX=B706h)
  1591.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1592.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1593.     DL = major version
  1594.     DH = minor version
  1595. SeeAlso: AX=B702h
  1596. ----------2FB711-----------------------------
  1597. INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  1598.     AX = B711h
  1599. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  1600.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  1601.       is written over top of the filename passed to the INT 21h call.  The
  1602.       application must provide a sufficiently large buffer.     This state is
  1603.       reset after the next INT 21h call processed by APPEND.
  1604.     APPEND uses the byte at offset 3Dh in the PSP (see INT 21/AH=26h) to
  1605.       store the flag telling it to overwrite the filename
  1606. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  1607.       INT 21/AH=6Ch
  1608. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  1609. --------N-2FB800-----------------------------
  1610. INT 2F - network - INSTALLATION CHECK
  1611.     AX = B800h
  1612. Return: AL = status
  1613.         00h        not installed
  1614.         nonzero installed
  1615.           BX = installed component flags (test in this order!)
  1616.            bit 6   server
  1617.            bit 2   messenger
  1618.            bit 7   receiver
  1619.            bit 3   redirector
  1620.            bit 1   LANPUP (LANtastic 4.0)
  1621. Notes:    this function is supported by LAN Manager, LANtastic, NetWare Lite,
  1622.       SilverNET, 10NET, etc.
  1623.     LANtastic and NetWare Lite use only BL for the return value, preserving
  1624.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  1625.       differentiation between those two groups by setting BH to a nonzero
  1626.       value before the call and checking its value on return.
  1627. SeeAlso: AX=4E53h,AX=B809h
  1628. --------N-2FB800CXF041-----------------------
  1629. INT 2F - 10NET - INSTALLATION CHECK
  1630.     AX = B800h
  1631.     CX = F041h
  1632. Return: AL = status
  1633.         00h        not installed
  1634.         nonzero installed
  1635.         BX = installed component flags (test in this order!)
  1636.            bit 6   server
  1637.            bit 2   messenger
  1638.            bit 7   receiver
  1639.            bit 3   redirector
  1640.            bit 1   LANPUP (LANtastic 4.0)
  1641.         CX = 10Net data segment
  1642.         CX:DX -> 10Net Configuration Table (see AX=5E01h"10NET")
  1643. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  1644.       call becomes identical to the standard installation check above
  1645. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  1646. --------N-2FB803-----------------------------
  1647. INT 2F - network - GET NETWORK EVENT POST HANDLER
  1648.     AX = B803h
  1649. Return: ES:BX -> current event post handler (see AX=B804h)
  1650. Note:    this function is supported by 10NET v5.0
  1651. SeeAlso: AX=B804h,AX=B903h
  1652. --------N-2FB804-----------------------------
  1653. INT 2F - network - SET NETWORK EVENT POST HANDLER
  1654.     AX = B804h
  1655.     CX = (10NET) 0370h if 10Windows is hooking post handler
  1656.     ES:BX -> new event post handler
  1657. Notes:    used in conjunction with AX=B803h to hook into the network event post
  1658.       routine
  1659.     this function is supported by 10NET v5.0
  1660.     The specified handler is called on any network event.  Two events are
  1661.       defined: message received and critical network error.
  1662. SeeAlso: AX=B803h,AX=B904h
  1663.  
  1664. Values post routine is called with:
  1665.     AX = 0000h single block message
  1666.         DS:SI -> ASCIZ originator name
  1667.         DS:DI -> ASCIZ destination name
  1668.         ES:BX -> text header (see below)
  1669.     AX = 0001h start multiple message block
  1670.         CX = block group ID
  1671.         DS:SI -> ASCIZ originator name
  1672.         DS:DI -> ASCIZ destination name
  1673.     AX = 0002h multiple block text
  1674.         CX = block group ID
  1675.         ES:BX -> text header (see below)
  1676.     AX = 0003h end multiple block message
  1677.         CX = block group ID
  1678.     AX = 0004h message aborted due to error
  1679.         CX = block group ID
  1680.     AX = 0101h server received badly formatted network request
  1681.         Return: AX = FFFFh (PC LAN will process error)
  1682.     AX = 0102h unexpected network error
  1683.         ES:BX -> NCB (see INT 5C)
  1684.     AX = 0103h server received INT 24 error
  1685.         other registers as for INT 24, except AH is in BH
  1686.         Return: as below, but only 0000h and FFFFh allowed
  1687. Return: AX = response code
  1688.         0000h user post routine processed message
  1689.         0001h PC LAN will process message, but message window not displayed
  1690.         FFFFh PC LAN will process message
  1691.  
  1692. Format of text header:
  1693. Offset    Size    Description
  1694.  00h    WORD    length of text (maximum 512 bytes)
  1695.  02h  N BYTEs    text of message
  1696. Note:    all CRLF sequences in message text are replaced by 14h
  1697. --------N-2FB807-----------------------------
  1698. INT 2F - network - GET NetBIOS NAME NUMBER OF MACHINE NAME
  1699.     AX = B807h
  1700. Return: CH = NetBIOS name number of the machine name
  1701. SeeAlso: INT 21/AX=5E00h
  1702. --------N-2FB808-----------------------------
  1703. INT 2F U - network - RELINK KEYBOARD HANDLER
  1704.     AX = B808h
  1705.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  1706. Notes:    this call replaces the address to which the network software chains on
  1707.       an INT 09 without preserving the original value.  This allows a prior
  1708.       handler to unlink, but does not allow a new handler to be added
  1709.       such that the network gets the INT 09 first unless the new handler
  1710.       completely takes over INT 09 and never chains.
  1711.     this function is called by the DOS 3.2 KEYBxx.COM
  1712. SeeAlso: AX=B908h
  1713. --------N-2FB809-----------------------------
  1714. INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK
  1715.     AX = B809h
  1716. Return: AH = major version
  1717.     AL = minor version (decimal)
  1718. Notes:    this function is also supported by SilverNET
  1719.     NetWare Lite returns its own version number rather than a PC LAN
  1720.       compatibility version
  1721. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LAN Manager"
  1722. --------N-2FB809-----------------------------
  1723. INT 2F - PC LAN Program - VERSION CHECK
  1724.     AX = B809h
  1725. Return: AH = minor version (decimal)
  1726.     AL = major version
  1727. Notes:    this function is also supported in this form by LAN Manager, the DOS
  1728.       LAN Requester, and 10NET v5.0
  1729.     10NET returns version 1.10 (AX=0A01h) for compatibility
  1730. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  1731. --------N-2FB80A-----------------------------
  1732. INT 2F - PC Network 1.00 - ???
  1733.     AX = B80Ah
  1734.     ???
  1735. Return: ???
  1736. Program: PC Network is an early networking package which was renamed the
  1737.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  1738. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  1739. --------N-2FB80F-----------------------------
  1740. INT 2F - DOS LAN Requester - GET START PARAMETERS
  1741.     AX = B80Fh
  1742.     CX = size of return data buffer
  1743.     ES:DI -> return data buffer
  1744. Return: AX = status
  1745.          00h     network started
  1746.          nonzero network not started
  1747.     CX = number of bytes returned in buffer
  1748.     ES:DI buffer filled
  1749.  
  1750. Format of return data buffer:
  1751. Offset    Size    Description
  1752.  00h    BYTE    major version
  1753.  01h    BYTE    minor version
  1754.  02h    WORD    configuration flags given when network was started (see below)
  1755.  04h 15 BYTEs    NET START machine name (space padded)
  1756.  13h    BYTE    00h
  1757.  14h 9    BYTEs    NET START domain name (NULL padded)
  1758.  1Dh    BYTE    00h
  1759.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  1760.  3Eh    WORD    /SRV value
  1761.  40h    WORD    /ASG value
  1762.  42h    WORD    /NBC value
  1763.  44h    WORD    /NBS value
  1764.  46h    WORD    /BBC value
  1765.  48h    WORD    /BBS value
  1766.  4Ah    WORD    /PBC value
  1767.  4Ch    WORD    /PBS value
  1768.  4Eh    WORD    /PFS value
  1769.  50h    WORD    /PFT value
  1770.  52h    WORD    /PWT value
  1771.  54h    WORD    /KUC value
  1772.  56h    WORD    /KST value
  1773.  58h    WORD    /NVS value
  1774.  5Ah    WORD    /NMS value
  1775.  5Ch    WORD    /NDB value
  1776.  5Eh    WORD    /MBI value
  1777.  60h    BYTE    NetBIOS name number for machine name
  1778.  61h    BYTE    NetBIOS name number for domain name
  1779.  62h    WORD    NetBIOS sessions required for configuration
  1780.  64h    WORD    NetBIOS commands required for configuration
  1781.  66h    WORD    NetBIOS names required for configuration
  1782.  68h 128 BYTEs    NET START path (LANROOT)
  1783.  E8h    BYTE    00h
  1784.  
  1785. Bitfields for configuration flags:
  1786.  bit 0    /NVS nonzero
  1787.  bit 1    /NMS nonzero
  1788.  bit 2    /API
  1789.  bit 3    /HIM
  1790.  bit 4    /LIM
  1791.  bit 5    /ENC
  1792.  bit 6    /POP
  1793.  bit 7    /EMS
  1794.  bit 8    /RPL
  1795.  bits 9-12 reserved
  1796.  bit 13 RDR started
  1797.  bit 14 RCV started
  1798.  bit 15 User is currently logged on
  1799. --------N-2FB900-----------------------------
  1800. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  1801.     AX = B900h
  1802. Return: AL = 00h if not installed
  1803.          FFh if installed
  1804. --------N-2FB901-----------------------------
  1805. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  1806.     AX = B901h
  1807. Return: AL = ???
  1808.     ES:BX -> RECEIVER.COM INT 2F handler
  1809. Desc:    allows more efficient execution by letting the caller bypass any other
  1810.       INT 2F handlers which have been added since RECEIVER.COM was
  1811.       installed
  1812. --------N-2FB903-----------------------------
  1813. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  1814.     AX = B903h
  1815. Return: ES:BX -> POST handler
  1816. SeeAlso: AX=B803h,AX=B904h
  1817. --------N-2FB904-----------------------------
  1818. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  1819.     AX = B904h
  1820.     ES:BX -> new POST handler
  1821. SeeAlso: AX=B804h,AX=B903h
  1822. --------N-2FB905-----------------------------
  1823. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  1824.     AX = B905h
  1825.     DS:BX -> 128-byte buffer for filename 1
  1826.     DS:DX -> 128-byte buffer for filename 2
  1827. Return: buffers filled from RECEIVER.COM internal buffers
  1828. Note:    use of filenames is unknown, but one appears to be for storing messages
  1829. SeeAlso: AX=B906h
  1830. --------N-2FB906-----------------------------
  1831. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  1832.     AX = B906h
  1833.     DS:BX -> 128-byte buffer for filename 1
  1834.     DS:DX -> 128-byte buffer for filename 2
  1835. Return: RECEIVER.COM internal buffers filled from user buffers
  1836. Note:    use of filenames is unknown, but one appears to be for storing messages
  1837. SeeAlso: AX=B905h
  1838. --------N-2FB908-----------------------------
  1839. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  1840.     AX = B908h
  1841.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  1842. Note:    this call replaces the address to which RECEIVER.COM chains on an
  1843.       INT 09 without preserving the original value.     This allows a prior
  1844.       handler to unlink, but does not allow a new handler to be added
  1845.       such that RECEIVER gets the INT 09 first.
  1846. SeeAlso: AX=B808h
  1847. --------V-2FBC00-----------------------------
  1848. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  1849.     AX = BC00h
  1850. Return: AL = 00h not installed, OK to install
  1851.        = 01h not installed, not OK to install
  1852.        = FFh installed
  1853.         BX = 5456h ("TV")
  1854. Note:    AH=BCh is the default value, which may be changed by a command line
  1855.       parameter to any value between 80h and FFh
  1856. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  1857. --------s-2FBC00BX3F3F-----------------------
  1858. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  1859.     AX = BC00h
  1860.     BX = 3F3Fh ('??')
  1861.     CX = 0000h
  1862.     DX = 0000h
  1863. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  1864. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  1865.       of sound boards; its primary programmer was Bryan Crane
  1866. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  1867. --------s-2FBC01BX6D20-----------------------
  1868. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  1869.     AX = BC01h
  1870.     BX = 6D20h ('m ')
  1871.     CX = 2076h (' v')
  1872.     DX = 2020h ('  ')
  1873. Return: BX = ASCII major version (leading zeros significant)
  1874.     CX = ASCII minor version (leading zeros significant)
  1875. --------s-2FBC02-----------------------------
  1876. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  1877.     AX = BC02h
  1878. Return: BX:DX -> state table
  1879. SeeAlso: AX=BC00h"MVSOUND",AX=BC03h
  1880. --------s-2FBC03-----------------------------
  1881. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  1882.     AX = BC03h
  1883. Return: BX:DX -> function table
  1884. SeeAlso: AX=BC00h"MVSOUND",AX=BC02h
  1885. --------s-2FBC04-----------------------------
  1886. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  1887.     AX = BC04h
  1888. Return: AX = 4D56h ('MV')
  1889.     BL = DMA channel
  1890.     CL = IRQ number
  1891. SeeAlso: AX=BC00h"MVSOUND",AX=BC01h"MVSOUND"
  1892. --------V-2FBC06-----------------------------
  1893. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  1894.     AX = BC06h
  1895. Return: BX = 5456h ("TV")
  1896.     CH = major version
  1897.     CL = minor version
  1898.     DL = revision
  1899. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  1900. --------s-2FBC06-----------------------------
  1901. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  1902.     AX = BC06h
  1903. Return: AX = 4D56h ('MV')
  1904.     DX:BX -> status string (first byte 0Ch if no status message to display)
  1905. SeeAlso: AX=BC00h"MVSOUND",AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  1906. --------s-2FBC0B-----------------------------
  1907. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  1908.     AX = BC0Bh
  1909. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  1910. SeeAlso: AX=BC00h"MVSOUND"
  1911. --------U-2FBE00-----------------------------
  1912. INT 2F - REDVIEW - INSTALLATION CHECK
  1913.     AX = BE00h
  1914. Return: AL = FFh if installed
  1915. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  1916.       copies data sent to standard output to standard error when the
  1917.       former has been redirected to a file, thus allowing the data to
  1918.       be seen on the screen at the same time it is captured in a file
  1919. --------N-2FBF00-----------------------------
  1920. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  1921.     AX = BF00h
  1922. Return: AL = FFh if installed
  1923. --------N-2FBF01-----------------------------
  1924. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  1925.     AX = BF01h
  1926.     ???
  1927. Return: ???
  1928. --------N-2FBF80-----------------------------
  1929. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  1930.     AX = BF80h
  1931.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  1932. Return: AL = FFh if installed
  1933.         ES:DI -> internal workspace
  1934. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  1935. --------F-2FC0-------------------------------
  1936. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  1937.     AH = C0h
  1938.     AL = function code (01h to 15h)
  1939. Return: ???
  1940. SeeAlso: AX=C000h"MTEZ",AX=CB00h"MTEZ"
  1941. --------N-2FC000-----------------------------
  1942. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  1943.     AX = C000h
  1944. Return: AL = FFh if installed
  1945.         DX:BX -> FAR entry point (see below)
  1946.         ES:SI -> signature string "LINKSUP$"
  1947. Notes:    LSL.COM may use any multiplex number between C0h and FFh; it searches
  1948.       for itself in that range, and installs using the first free multiplex
  1949.       number in the range if not already loaded.
  1950.     on return, ES = DX for LSL v1.10; LSL makes use of this in its search
  1951.       for a previous installation
  1952.  
  1953. Call LSL entry point with:
  1954.     BX = 0001h "Request MLID Registration"
  1955.         ES:SI -> ???
  1956.         ???
  1957.         Return: AX = completion code (see below)
  1958.             DS:DI -> LSL information block
  1959.     BX = 0002h get support entry points
  1960.         ES:SI -> buffer for entry point record (see below)
  1961.         Return: ES:SI buffer filled
  1962.     BX = 0003h "Request MLID API entry point"
  1963.         Return: ES:SI -> MLID (Multiple Link Interface Driver) API
  1964.                   entry point (call with BX=function 00h-10h,
  1965.                   not range-checked)
  1966. Notes:    LSL v1.10 executes BX=0003h for all other values of BX
  1967.     see "Novell LAN Driver Developer's Guide, Volume III" for details of
  1968.       function 0001h
  1969.  
  1970. Values for completion code:
  1971.  0000h    successful
  1972.  8001h    out of resources
  1973.  8002h    bad parameter
  1974.  8003h    no more items
  1975.  8004h    item not present
  1976.  8005h    failed
  1977.  8006h    receive overflow
  1978.  8007h    canceled
  1979.  8008h    bad command
  1980.  8009h    duplicate entry
  1981.  800Ah    no such handler
  1982.  800Bh    no such driver
  1983.  
  1984. Format of entry point record:
  1985. Offset    Size    Description
  1986.  00h    DWORD    pointer to protocol support entry point in LSL (see below)
  1987.  04h    DWORD    pointer to general support entry point in LSL (see below)
  1988.  
  1989. Call protocol support entry point with:
  1990.     BX = function number
  1991.         0000h ???
  1992.         0001h ???
  1993.         0002h ???
  1994.         0003h "ScheduleAESEvent"
  1995.         ES:SI -> AES ECB to be scheduled (see below for format)
  1996.         Return: ES,SI preserved
  1997.         0004h "CancelAESEvent"
  1998.         ES:SI -> ECB to be cancelled (see below for format)
  1999.         Return: ES,SI preserved
  2000.         0005h "GetIntervalMarker"
  2001.         Return: DX:AX = current interval marker in milliseconds
  2002.             all other registers preserved
  2003.         0006h "RegisterStack"
  2004.         AX = logical board number
  2005.         ES:SI -> bound stack info structure (see below)
  2006.         Return: BX = assigned Stack ID if AX=0000h
  2007.         0007h "DeRegisterStack"
  2008.         AX = protocol stack's assigned Stack ID
  2009.         0008h "RegisterDefaultStack"
  2010.         AX = logical board number
  2011.         ES:SI -> stack info structure (see below)
  2012.         0009h "DeRegisterDefaultStack"
  2013.         AX = logical board number
  2014.         000Ah "RegisterPrescanStack"
  2015.         AX = logical board number
  2016.         ES:SI -> stack info structure (see below)
  2017.         000Bh "DeRegisterPrescanStack"
  2018.         AX = logical board number
  2019.         000Ch "SendPacket"
  2020.         ES:SI -> send ECB
  2021.         Return: interrupts disabled
  2022.         000Dh ???
  2023.         000Eh ???
  2024.         000Fh ???
  2025.         0010h "GetStackIDFromName"
  2026.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  2027.         Return: BX = Stack ID if AX=0000h
  2028.         0011h "GetPIDFromStackIDBoard"
  2029.         AX = Stack ID for protocol
  2030.         CX = logical board number
  2031.         ES:SI -> 6-byte buffer for protocol ID
  2032.         0012h "GetMLIDControlEntry"
  2033.         AX = logical board number
  2034.         Return: ES:SI -> MLID control handler (see below) if AX=0000h
  2035.         0013h "GetProtocolControlEntry"
  2036.         AX = Stack ID or
  2037.             FFFEh Prescan stack
  2038.                 CX = logical board number
  2039.             FFFFh default protocol
  2040.                 CX = logical board number
  2041.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  2042.                 (see below)
  2043.         0014h "GetLSLStatistics"
  2044.         Return: AX = 0000h (successful)
  2045.             ZF set
  2046.             ES:SI -> LSL statistics table (see below)
  2047.         0015h "BindStack"
  2048.         AX = protocol stack's assigned Stack ID
  2049.         CX = logical board number
  2050.         0016h "UnbindStack"
  2051.         AX = protocol stack's assigned Stack ID
  2052.         CX = logical board number
  2053.         0017h "AddProtocolID"
  2054.         AX = frame type ID code
  2055.         ES:SI -> 6-byte protocol ID
  2056.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  2057.         0018h "RelinquishControl"
  2058.         Return: after LSL performs any necessary background processing
  2059.         0019h "GetLSLConfiguration"
  2060.         Return: AX = 0000h (successful)
  2061.             ZF set
  2062.             ES:SI -> LSL configuration table (see below)
  2063.         001Ah "GetTickMarker"
  2064.         Return: AX = number of 55ms ticks since LSL loaded
  2065.             BX destroyed
  2066. Return: AX = completion code (see above)
  2067.     ZF set if successful
  2068.     SS:SP, DS, BP preserved; most other registers may be destroyed
  2069.  
  2070. Call general support entry point with:
  2071.     BX = function number
  2072.         0000h "Allocate Memory" (obsolete)
  2073.          always returns AX=8008h (BAD_COMMAND)
  2074.         0001h "Free Memory" (obsolete)
  2075.          always returns AX=8008h (BAD_COMMAND)
  2076.         0002h "Realloc Memory" (obsolete)
  2077.          always returns AX=8008h (BAD_COMMAND)
  2078.         0003h "Memory Statistics" (obsolete)
  2079.          always returns AX=8008h (BAD_COMMAND)
  2080.         0004h "Add Memory To Pool" (obsolete)
  2081.          always returns AX=8008h (BAD_COMMAND)
  2082.         0005h "AddGeneralService"
  2083.         ES:SI -> General Service Control Block (see below)
  2084.         0006h "RemoveGeneralService"
  2085.         ES:SI -> General Service Control Block (see below)
  2086.         0007h "GetNETcfgPath"
  2087.         Return: AX = 0000h (successful)
  2088.             DS:DX -> ASCIZ pathname for NET.CFG
  2089.         0008h U ???     (in LSL 1.10)
  2090.         Return: AX = 0000h
  2091.             ES:SI -> ??? (a 22-byte data area)
  2092.         000Ah "GetCriticalSectionStatus"
  2093.         Return: BX = total outstanding calls to "StartCriticalSection"
  2094.         000Bh "ServiceEvents"
  2095.         interrupts disabled
  2096.         Return: interrupts disabled
  2097.         0010h "GetStackECB"
  2098.         DS:DI -> Lookahead structure (see below)
  2099.         interrupts disabled
  2100.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  2101.             interrupts disabled
  2102.         8000h-FFFFh reserved for user general service providers
  2103. Return: AX = completion code (see above)
  2104.     ZF set if successful
  2105.     SS:SP, DS, BP preserved
  2106.  
  2107. Call MLID control handler with:
  2108.     AX = logical board number
  2109.     BX = function number
  2110.         0000h "GetMLIDConfiguration"
  2111.         Return: ES:SI -> MLID's configuration table if successful
  2112.                 (see below for format)
  2113.         0001h "GetMLIDStatistics"
  2114.         Return: ES:SI -> MLID's statistics table if successful
  2115.                 (see below for format)
  2116.         0002h "AddMulticastAddress"
  2117.         ES:SI -> 6-byte multicast address to add
  2118.         0003h "DeleteMulticastAddress"
  2119.         ES:SI -> 6-byte multicast address to delete
  2120.         0005h "MLIDShutdown"
  2121.         CX = type
  2122.             0000h permanent (also deregisters from LSL)
  2123.             other temporary (shutdown hardware only)
  2124.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  2125.         0007h "Create Connection" (obsolete?)
  2126.         ???
  2127.         0008h "Delete Connection" (obsolete?)
  2128.         ???
  2129.         0009h "SetLookAheadSize"
  2130.         CX = requested lookahead size (00h-80h)
  2131.         0010h "PromiscuousChange"
  2132.         CX = what to receive promiscuously
  2133.             bit 0: MAC frames
  2134.             bit 1: non-MAC frames
  2135.         0011h "RegisterReceiveMonitor"
  2136.         CX = subfunction
  2137.             0000h disable receive monitoring
  2138.             else  enable receive monitoring
  2139.         ES:SI -> monitor receive routine
  2140.         ES:DI -> monitor transmit routine
  2141.         0012h "Driver Poll" (obsolete?)
  2142.         ???
  2143. Return: AX = completion code (see above)
  2144.     ZF set if successful
  2145. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  2146.       mode flags field of the MLID's configuration table
  2147.  
  2148. Call protocol stack control entry point with:
  2149.     BX = function number
  2150.         0000h "GetProtocolStackConfiguration"
  2151.         Return: ES:SI -> protocol stack's configuration table
  2152.                 (see below)
  2153.         0001h "GetProtocolStackStatistics"
  2154.         Return: ES:SI -> protocol stack's statistics table (see below)
  2155.         0002h "BindToMLID"
  2156.         CX = board number to bind to
  2157.         ES:SI -> implementation-dependant parameter string
  2158.         0003h "UnBindFromMLID"
  2159.         CX = board number from which protocol should unbind
  2160.         ES:SI -> optional implementation-dependant parameter string
  2161.         0004h "MLIDDeRegistered"
  2162.         CX = board number that has de-registered from LSL
  2163. Return: AX = status
  2164.         0000h successful
  2165.         else implementation-dependant error codes
  2166.     ZF set if successful
  2167.     SS:SP, DS, BP preserved
  2168.  
  2169. Format of AES ECB:
  2170. Offset    Size    Description
  2171.  00h    DWORD    "AESLink" pointer used by LSL for list management
  2172.  04h    DWORD    number of milliseconds to wait
  2173.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  2174.  0Ch    DWORD    -> function to be invoked when time expires
  2175.         ES:SI will point to this structure on entry,
  2176.         DS, BP, and SS:SP must be preserved.
  2177.  
  2178. Format of LSL Configuration Table:
  2179. Offset    Size    Description
  2180.  00h    BYTE    major version of configuration table
  2181.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  2182.  02h  8 BYTEs    reserved
  2183.  0Ah    BYTE    LSL major version (decimal)
  2184.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  2185. ---LSL 1.0x ---
  2186.  0Ch 14 BYTEs    reserved
  2187. ---LSL 1.10+ ---
  2188.  0Ch    WORD    maximum number of boards which LSL can handle
  2189.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  2190.  10h 12 BYTEs    reserved
  2191.  
  2192. Format of LSL Statistics Table:
  2193. Offset    Size    Description
  2194.  00h    BYTE    major version of statistics table format
  2195.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  2196.  02h    WORD    "GenericCounters" number of counters in static portion of
  2197.         table
  2198.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  2199.         counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  2200.         is the next field, etc.
  2201.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  2202.  0Ch    DWORD    reserved
  2203.  10h    DWORD    reserved
  2204.  14h    DWORD    "AESEventsCount" number of completed AES events
  2205.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  2206.         sections inside the MLIDs
  2207.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  2208.  20h    DWORD    reserved
  2209.  24h    DWORD    reserved
  2210.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  2211.  2ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  2212.         protocol stack
  2213.  30h    WORD    "NumberCustom" number of custom variables that follow
  2214.  32h  N DWORDs    custom counters
  2215.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2216.     var    length-prepended and NULL terminated string for Counter 0
  2217.     ...
  2218.     var    length-prepended and NULL terminated string for Counter N-1
  2219.  
  2220. Format of Protocol Stack Statistics Table:
  2221. Offset    Size    Description
  2222.  00h    BYTE    statistics table major version
  2223.  01h    BYTE    statistics table minor version (decimal, 0-99)
  2224.  02h    WORD    number of generic counters following
  2225.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  2226.  08h    DWORD    TotalTxPackets
  2227.  0ch    DWORD    TotalRxPackets
  2228.  10h    DWORD    IgnoredRxPackets
  2229.  14h    WORD    number of custom counters
  2230.  16h  N DWORDs    custom counters
  2231.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2232.     var    length-prepended and NULL terminated string for Counter 0
  2233.     ...
  2234.     var    length-prepended and NULL terminated string for Counter N-1
  2235.  
  2236. Format of Protocol Stack Configuration Table:
  2237. Offset    Size    Description
  2238.  00h    BYTE    configuration table major version
  2239.  01h    BYTE    configuration table minor version (decimal, 0-99)
  2240.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  2241.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  2242.  0Ah    BYTE    protocol stack major version
  2243.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  2244.  0Ch 16 BYTEs    reserved for future use
  2245.  
  2246. Format of MLID Configuration Table:
  2247. Offset    Size    Description
  2248.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  2249.  1ah    BYTE    configuration table major version
  2250.  1bh    BYTE    configuration table minor version (decimal, 0-99)
  2251.  1ch  6 BYTEs    node address
  2252.  22h    WORD    MLID mode flags (see below)
  2253.  24h    WORD    board number
  2254.  26h    WORD    board instance (if more than one of same board installed)
  2255.  28h    WORD    maximum packet size
  2256.  2Ah    WORD    BestDataSize
  2257.  2Ch    WORD    WorstDataSize
  2258.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  2259.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  2260.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  2261.  3Ah    WORD    reserved (0000h)
  2262.  3Ch    WORD    frame type ID
  2263.  3Eh    WORD    TransportTime (milliseconds)
  2264.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  2265.  44h    WORD    lookahead size
  2266.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  2267.  48h    WORD    QueueDepth
  2268.  4Ch  6 BYTEs    reserved (0)
  2269.  54h    BYTE    driver major version
  2270.  55h    BYTE    driver minor version (decimal, 0-99)
  2271.  56h    WORD    flags
  2272.         bits 10-9: specialized multicast support
  2273.             00 = Group addressing is default for medium
  2274.             01 = Invalid
  2275.             10 = Filter group address in MLID.
  2276.             11 = Adapter filters group address.
  2277.         bit 2: supports Micro Channel cards
  2278.         bit 1: supports ISA cards
  2279.         bit 0: supports EISA cards
  2280.  58h    WORD    send retries
  2281.  5Ah    DWORD    ConfigTableLink
  2282.  5Eh    WORD    MLID sharing flags (see below)
  2283.  60h    WORD    slot number
  2284.  62h    WORD    I/O address 1
  2285.  64h    WORD    I/O range 1
  2286.  66h    WORD    I/O address 2
  2287.  68h    WORD    I/O range 2
  2288.  6Ah    DWORD    memory address 1
  2289.  6Eh    WORD    memory size 1
  2290.  70h    DWORD    memory address 2
  2291.  74h    WORD    memory size 2
  2292.  76h    BYTE    interrupt line 1
  2293.  77h    BYTE    interrupt line 2
  2294.  78h    BYTE    DMA line 1
  2295.  79h    BYTE    DMA line 2
  2296.  
  2297. Bitfields for MLID mode flags:
  2298.  bit 15 MLID supports Octet Bit Reversal
  2299.  bit 14 node address is non-canonical
  2300.  bit 13 promiscuous mode is supported
  2301.  bit 12-8 reserved
  2302.  bit 7    LDataSize field in LookAhead structure supported
  2303.  bit 6    raw send supported
  2304.  bit 5    MLID needs to be polled by LSL
  2305.  bit 4    reserved (0)
  2306.  bit 3    multicasting is supported
  2307.  bit 2    not currently used by DOS ODI, set to 0.
  2308.  bit 1    network card uses DMA.
  2309.  bit 0    RealDriverBit, always set to 1.
  2310.  
  2311. Bitfields for MLID sharing flags:
  2312.  bit 8    NIC can share DMA2
  2313.  bit 7    NIC can share DMA1
  2314.  bit 6    NIC can share IRQ2
  2315.  bit 5    NIC can share IRQ1
  2316.  bit 4    NIC can share Memory2
  2317.  bit 3    NIC can share Memory1
  2318.  bit 2    NIC can share IO2
  2319.  bit 1    NIC can share IO1
  2320.  bit 0    MLID is currently shut down
  2321.  
  2322. Format of MLID Statistics Table:
  2323. Offset    Size    Description
  2324.  00h    BYTE    driver statistics table major version
  2325.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  2326.  02h    WORD    number of generic counters (typically 13)
  2327.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  2328.  08h    DWORD    TotalTxCount
  2329.  0Ch    DWORD    TotalRxCount
  2330.  10h    DWORD    NoECBAvailableCount
  2331.  14h    DWORD    TxTooBigCount
  2332.  18h    DWORD    TxTooSmallCount
  2333.  1ch    DWORD    RxOverflowCount
  2334.  20h    DWORD    RxTooBigCount
  2335.  24h    DWORD    RxTooSmallCount
  2336.  28h    DWORD    TxMiscCount
  2337.  2ch    DWORD    RxMiscCount
  2338.  30h    DWORD    TxRetryCount
  2339.  34h    DWORD    RxChecksumErrorCount
  2340.  38h    DWORD    RxMismatchCount
  2341.  3Ch    WORD    number of custom counters
  2342.  3Eh  N DWORDs    custom counters
  2343.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2344.     var    length-prepended and NULL terminated string for Counter 0
  2345.     ...
  2346.     var    length-prepended and NULL terminated string for Counter N-1
  2347.  
  2348. Format of bound stack info structure:
  2349. Offset    Size    Description
  2350.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  2351.  04h    DWORD    -> receive handler
  2352.  08h    DWORD    -> control handler
  2353.  
  2354. Format of stack info structure:
  2355. Offset    Size    Description
  2356.  00h    DWORD    -> receive handler
  2357.  04h    DWORD    -> control handler
  2358.  
  2359. Format of General Service Control Block:
  2360. Offset    Size    Description
  2361.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  2362.  04h    DWORD    -> entry point for general service handler
  2363.  08h    WORD    command code for this general service (8000h-FFFFh)
  2364. Note:    the control block must not be altered or deallocated until the general
  2365.       service is removed
  2366.  
  2367. Format of Lookahead structure:
  2368. Offset    Size    Description
  2369.  00h    DWORD    -> Media header
  2370.  04h    DWORD    -> lookahead buffer
  2371.  08h    WORD    length of lookahead buffer
  2372.  0Ah  6 BYTEs    protocol ID
  2373.  10h    WORD    logical board number
  2374.  12h    WORD    lookahead size
  2375. --------f-2FC000-----------------------------
  2376. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  2377.     AX = C000h
  2378. Return: AL = FFh if installed
  2379.        ES:DI -> signature string "FN32 32CHAR TSR"
  2380. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  2381. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  2382.       managing dictionary files in each directory which contains long
  2383.       filenames
  2384. --------M-2FC000-----------------------------
  2385. INT 2F - QMR - INSTALLATION CHECK
  2386.     AX = C000h
  2387. Return: AL = FFh if installed
  2388.         ES:DI -> signature string "QMR1!"
  2389. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  2390.       service interrupt (int 33h) and substitutes a fast software
  2391.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  2392. Note:    QMR may use any multiplex number between C0h and FFh; it searches
  2393.      for itself in that range, and installs using the first free multiplex
  2394.      number in the range if not already loaded.
  2395. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  2396. --------V-2FC000-----------------------------
  2397. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  2398.     AX = C000h
  2399. Return: AL = FFh if installed
  2400.         BX = segment of resident code
  2401. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  2402.       Javurek
  2403. Note:    VGAsave may use any AH value from C0h through FFh; the transient
  2404.       portion of VGAsave compares the first 38 bytes of the resident code
  2405.       (addressed through BX) against its own copy of the resident code to
  2406.       complete the installation check
  2407. Index:    screen saver;VGAsave
  2408. --------F-2FC000BX444B-----------------------
  2409. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  2410.     AX = C000h
  2411.     BX = 444Bh
  2412.     CX = 4A4Eh
  2413. Return: AL = status
  2414.         00h not installed, OK to install
  2415.         FFh installed
  2416.         BX = 646Bh
  2417.         CX = 6A6Eh
  2418. Note:    this TSR will use any free multiplex number from C0h to FFh
  2419. SeeAlso: AH=C0h"MTEZ"
  2420. --------V-2FC000-----------------------------
  2421. INT 2F - AD-DOS - INSTALLATION CHECK
  2422.     AX = C000h
  2423. Return: AL = FFh if installed
  2424.         BX = 4144h ('AD')
  2425.         CX = 2D44h ('-D')
  2426.         DX = 4F53h ('OS')
  2427. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2428.       MS Windows
  2429. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2430.       After Dark will try successive values up to AH=FFh
  2431. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h
  2432. Index:    screen saver;AD-DOS
  2433. --------U-2FC000-----------------------------
  2434. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  2435.     AX = C000h
  2436. Return: AL = FFh if installed
  2437.         ES = segment of resident code
  2438. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  2439.       with 3-mode floppy drives to read Wang document diskettes
  2440. Note:    AH=C0h is the default; WANG_ER scans all multiplex numbers from C0h to
  2441.       FFh for a free spot on installation.    The installation check is
  2442.       completed by comparing the resident code with the copy in the
  2443.       transient program
  2444. --------i-2FC000-----------------------------
  2445. INT 2F - ASPIHOOK.SYS - INSTALLATION CHECK
  2446.     AX = C000h
  2447. Return: AL = FFh if multiplex number in use
  2448.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  2449. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  2450.       ASPI host manager; it is part of the Personal Measure system
  2451.       activity monitor from Spirit of Performance, Inc.
  2452. Note:    AH=C0h is the default; ASPIHOOK searches for a free multiplex number
  2453.       between C0h and FFh on which to install itself
  2454. SeeAlso: AX=C000h"PMEASURE"
  2455. --------i-2FC000-----------------------------
  2456. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  2457.     AX = C000h
  2458. Return: AL = FFh if multiplex number in use
  2459.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  2460. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  2461.       is part of the Personal Measure system activity monitor from Spirit
  2462.       of Performance, Inc.
  2463. Notes:    AH=C0h is the default; PMEASURE.EXE searches for a free multiplex
  2464.       number between C0h and FFh on which to install itself. If
  2465.       ASPIHOOK.SYS is already installed, PMEASURE.EXE uses the next higher
  2466.       free multiplex number.
  2467. SeeAlso: AX=C000h"ASPIHOOK"
  2468. --------c-2FC000-----------------------------
  2469. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  2470.     AX = C000h
  2471. Return: AL = FFh if installed
  2472.         SI = signature value 20D6h
  2473.         DI = signature value 8761h
  2474.         ES:BX -> configuration table (see below)
  2475.         CX = ??? (0300h)
  2476.         DX = ??? (0020h)
  2477. Program: PCACHE is the resident print spooler portion of PrintCache by
  2478.       LaserTools; it may use either memory or disk space to spool output
  2479. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2480.       with a commandline switch
  2481. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  2482.  
  2483. Format of configuration table:
  2484. Offset    Size    Description
  2485.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  2486.  1Ah  2 BYTEs    ???
  2487.  1Ch    DWORD    -> data table (see below)
  2488.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  2489.  24h  5 BYTEs    ???
  2490.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  2491.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  2492.  37h    WORD    buffered port BIOS port number
  2493.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  2494.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  2495.  40h    WORD    physical port BIOS port number
  2496.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  2497.  47h    BYTE    port driver IRQ
  2498.  48h 21 BYTEs    ???
  2499.  5Dh    WORD    buffer size in K
  2500.  5Fh 27 BYTEs    ???
  2501.  7Ah    BYTE    popup hotkey shift states (see INT 16/AH=02h)
  2502.  7Bh    BYTE    popup hotkey scan code (see INT 09h"IRQ1")
  2503.  7Ch  4 BYTEs    ???
  2504.  80h 20 BYTEs    ASCIZ printer type name
  2505.     ???
  2506.  
  2507. Format of data table:
  2508. Offset    Size    Description
  2509.  00h  2 BYTEs    ???
  2510.  02h    DWORD    -> ??? entry point
  2511.     ???
  2512. --------M-2FC001-----------------------------
  2513. INT 2F - QMR - REQUEST HARDWARE RESET
  2514.     AX = C001h
  2515. Return: ES = QMR code segment
  2516.     AL destroyed
  2517. Desc:    this function is used to force a full mouse reset when QMR is installed
  2518. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2519. --------V-2FC001ES0000-----------------------
  2520. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  2521.     AX = C001h
  2522.     ES = 0000h
  2523. Return: AL = 00h if successful
  2524.         ES = AD-DOS TSR Code Segment
  2525. SeeAlso: AX=C000h"AD-DOS"
  2526. Index:    screen saver;AD-DOS
  2527. --------c-2FC001-----------------------------
  2528. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  2529.     AX = C001h
  2530. Return: AL = FFh if installed
  2531.         ES:BX -> ???
  2532.         ES:DX -> ???
  2533.         ES:SI -> ???
  2534.         ES:DI -> ??? (equivalent to AX=C002h)
  2535. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  2536. --------V-2FC002-----------------------------
  2537. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  2538.     AX = C002h
  2539. Return: AL = 00h if successful
  2540.         BX = status
  2541.         0000h no input since last check
  2542.         0001h new input available
  2543. Note:    this call also resets the new-input flag
  2544. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2545. Index:    screen saver;AD-DOS
  2546. --------M-2FC002-----------------------------
  2547. INT 2F - QMR - DISABLE QMR
  2548.     AX = C002h
  2549. Return: ES = QMR code segment
  2550.     AL destroyed
  2551. Desc:    this call temporarily disables QMR
  2552. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  2553. --------c-2FC002-----------------------------
  2554. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  2555.     AX = C002h
  2556. Return: AX = ??? in K
  2557.     BX = size of print buffer in K
  2558. Program: PCACHE is the resident print spooler portion of PrintCache by
  2559.       LaserTools; it may use either memory or disk space to spool output
  2560. SeeAlso: AX=C000h"PCACHE"
  2561. --------V-2FC003-----------------------------
  2562. INT 2F - AD-DOS - SET MINUTES TO WAIT
  2563.     AX = C003h
  2564.     BX = minutes to wait before blanking screen
  2565. Return: AL = 00h if successful
  2566. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2567.       MS Windows
  2568. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2569.       After Dark will try successive values up to AH=FFh
  2570.     this call also resets the delay timer
  2571. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2572. Index:    screen saver;AD-DOS
  2573. --------M-2FC003-----------------------------
  2574. INT 2F - QMR - ENABLE QMR
  2575.     AX = C003h
  2576. Return: ES = QMR code segment
  2577.     AL destroyed
  2578. Desc:    this call enables QMR after it has been disabled
  2579. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2580. --------c-2FC003-----------------------------
  2581. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2582.     AX = C003h
  2583. Return: BX destroyed
  2584. SeeAlso: AX=C004h"PCACHE"
  2585. --------V-2FC004-----------------------------
  2586. INT 2F - AD-DOS - GET MINUTES TO WAIT
  2587.     AX = C004h
  2588. Return: AL = 00h if successful
  2589.         BX = minutes to wait before blanking screen
  2590. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  2591. Index:    screen saver;AD-DOS
  2592. --------c-2FC004-----------------------------
  2593. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2594.     AX = C004h
  2595. Return: BX destroyed
  2596. SeeAlso: AX=C003h"PCACHE"
  2597. --------V-2FC005-----------------------------
  2598. INT 2F - AD-DOS - SET BLANKER STATUS
  2599.     AX = C005h
  2600.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  2601. Return: AL = 00h if successful
  2602. SeeAlso: AX=C006h"AD-DOS"
  2603. Index:    screen saver;AD-DOS
  2604. --------c-2FC005-----------------------------
  2605. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2606.     AX = C005h
  2607.     ???
  2608. Return: BX destroyed
  2609.     ???
  2610. Program: PCACHE is the resident print spooler portion of PrintCache by
  2611.       LaserTools; it may use either memory or disk space to spool output
  2612. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2613.       with a commandline switch
  2614. SeeAlso: AX=C000h"PCACHE"
  2615. --------V-2FC006-----------------------------
  2616. INT 2F - AD-DOS - GET BLANKER STATUS
  2617.     AX = C006h
  2618. Return: AL = 00h if successful
  2619.         BX = current state of screen blanker (0000h inactive, 0001h active)
  2620. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2621.       MS Windows
  2622. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2623.       After Dark will try successive values up to AH=FFh
  2624. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  2625. Index:    screen saver;AD-DOS
  2626. --------c-2FC006-----------------------------
  2627. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2628.     AX = C006h
  2629.     ???
  2630. Return: BX destroyed
  2631.     ???
  2632. Note:    this function appears to be identical to AX=C007h
  2633. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  2634. --------V-2FC007-----------------------------
  2635. INT 2F - AD-DOS - SET HOT KEY
  2636.     AX = C007h
  2637.     BX = hot key
  2638.     CL = hot key shift status
  2639. Return: AL = 00h if successful
  2640. SeeAlso: AX=C008h"AD-DOS"
  2641. Index:    screen saver;AD-DOS
  2642. --------c-2FC007-----------------------------
  2643. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2644.     AX = C007h
  2645.     ???
  2646. Return: BX destroyed
  2647.     ???
  2648. Note:    this function appears to be identical to AX=C006h
  2649. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  2650. --------V-2FC008-----------------------------
  2651. INT 2F - AD-DOS - GET CURRENT HOT KEY
  2652.     AX = C008h
  2653. Return: AX = status
  2654.         0000h successful
  2655.         BX = Hot Key
  2656.         CL = Hot Key Shift Status
  2657.         0008h otherwise
  2658. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  2659. Index:    screen saver;AD-DOS
  2660. --------c-2FC008-----------------------------
  2661. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2662.     AX = C008h
  2663. Return: BX destroyed
  2664. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  2665. --------V-2FC009-----------------------------
  2666. INT 2F - AD-DOS - UNBLANK MONITOR
  2667.     AX = C009h
  2668. Return: AL = 00h if successful
  2669. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2670.       MS Windows
  2671. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2672.       After Dark will try successive values up to AH=FFh
  2673.     this function works by simulating keyboard activity
  2674. Index:    screen saver;AD-DOS
  2675. --------c-2FC009-----------------------------
  2676. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2677.     AX = C009h
  2678. Return: BX destroyed
  2679. Program: PCACHE is the resident print spooler portion of PrintCache by
  2680.       LaserTools; it may use either memory or disk space to spool output
  2681. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2682.       with a commandline switch
  2683. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  2684. --------V-2FC00A-----------------------------
  2685. INT 2F - AD-DOS - ???
  2686.     AX = C00Ah
  2687. Return: AX = status
  2688.         0000h successful
  2689.         BH = ??
  2690.         BL = ??
  2691.         000Ah failed
  2692. Index:    screen saver;AD-DOS
  2693. --------c-2FC00A-----------------------------
  2694. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2695.     AX = C00Ah
  2696.     ???
  2697. Return: AH = bit flags
  2698.         bit 5: ???
  2699.     AL = bit flags
  2700.         bit 4: ???
  2701.         bit 3: ???
  2702.     BX destroyed
  2703.     ???
  2704. SeeAlso: AX=C000h"PCACHE"
  2705. --------V-2FC00B-----------------------------
  2706. INT 2F - AD-DOS - ???
  2707.     AX = C00Bh
  2708. Return: AX = status
  2709.         0000h successful
  2710.         000Bh failed
  2711. Index:    screen saver;AD-DOS
  2712. --------c-2FC00B-----------------------------
  2713. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2714.     AX = C00Bh
  2715. Return: BX destroyed
  2716. SeeAlso: AX=C000h"PCACHE"
  2717. --------V-2FC00C-----------------------------
  2718. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  2719.     AX = C00Ch
  2720. Return: AX = status
  2721.         0000h successful
  2722.         000Ch failed
  2723. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2724.       MS Windows
  2725. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2726.       After Dark will try successive values up to AH=FFh
  2727. Index:    screen saver;AD-DOS
  2728. --------c-2FC00C-----------------------------
  2729. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2730.     AX = C00Ch
  2731. Return: AX = ??? (0000h)
  2732.     BX = ??? (0000h)
  2733.     CX = ??? (0100h)
  2734.     DL = ???
  2735.     DH = ???
  2736. SeeAlso: AX=C000h"PCACHE"
  2737. --------c-2FC00D-----------------------------
  2738. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  2739.     AX = C00Dh
  2740.     DL = ???
  2741. Return: BX destroyed
  2742. Program: PCACHE is the resident print spooler portion of PrintCache by
  2743.       LaserTools; it may use either memory or disk space to spool output
  2744. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2745.       with a commandline switch
  2746. SeeAlso: AX=C000h"PCACHE"
  2747. --------V-2FC00E-----------------------------
  2748. INT 2F - AD-DOS - SET PASSWORD STATUS
  2749.     AX = C00Eh
  2750.     BX = new state (0000h disabled, 0001h enabled)
  2751. Return: ???
  2752. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  2753. Index:    screen saver;AD-DOS
  2754. --------c-2FC00E-----------------------------
  2755. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  2756.     AX = C00Eh
  2757.     ES:DX -> ???
  2758. Return: BX destroyed
  2759. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  2760.       but ignored if already set; a counter is incremented
  2761. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  2762. --------V-2FC00F-----------------------------
  2763. INT 2F - AD-DOS - GET PASSWORD STATUS
  2764.     AX = C00Fh
  2765. Return: BX = current state (0000h disabled, 0001h enabled)
  2766. SeeAlso: AX=C00Eh"AD-DOS"
  2767. Index:    screen saver;AD-DOS
  2768. --------c-2FC00F-----------------------------
  2769. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  2770.     AX = C00Fh
  2771. Return: BX destroyed
  2772. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  2773.       internal pointer variable to 0000h:0000h when it reaches zero
  2774. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  2775. --------c-2FC010-----------------------------
  2776. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2777.     AX = C010h
  2778.     CX = index of ??? table (00h-02h, others treated as 00h)
  2779.     SI = offset into data table
  2780. Return:    AL = byte at specified offset into table
  2781.     BX destroyed
  2782. SeeAlso: AX=C000h"PCACHE"
  2783. --------c-2FC011-----------------------------
  2784. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2785.     AX = C011h
  2786. Return: AX = ??? (0007h)
  2787.     BX = ??? (0001h)
  2788.     CH = ???
  2789.     CL = ???
  2790. SeeAlso: AX=C000h"PCACHE"
  2791. --------c-2FC012-----------------------------
  2792. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2793.     AX = C012h
  2794. Return: AX = ???
  2795.     BX = ???
  2796.     CX = ???
  2797.     DX = ???
  2798. SeeAlso: AX=C000h"PCACHE"
  2799. --------c-2FC013-----------------------------
  2800. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2801.     AX = C013h
  2802.     ???
  2803. Return: BX destroyed
  2804.     ???
  2805. Program: PCACHE is the resident print spooler portion of PrintCache by
  2806.       LaserTools; it may use either memory or disk space to spool output
  2807. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2808.       with a commandline switch
  2809. SeeAlso: AX=C000h"PCACHE"
  2810. --------c-2FC014-----------------------------
  2811. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2812.     AX = C014h
  2813.     ???
  2814. Return: BX destroyed
  2815.     ???
  2816. SeeAlso: AX=C000h"PCACHE"
  2817. --------c-2FC015-----------------------------
  2818. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2819.     AX = C015h
  2820.     ???
  2821. Return: BX destroyed
  2822.     ???
  2823. SeeAlso: AX=C000h"PCACHE"
  2824. --------c-2FC016-----------------------------
  2825. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  2826.     AX = C016h
  2827. Return: BX destroyed
  2828. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  2829. --------c-2FC017-----------------------------
  2830. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  2831.     AX = C017h
  2832. Return: BX destroyed
  2833. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  2834. --------c-2FC018-----------------------------
  2835. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2836.     AX = C018h
  2837.     ???
  2838. Return: BX destroyed
  2839.     ???
  2840. Note:    the first instruction of this function is an indirect jump which points
  2841.       at a RET by default
  2842. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  2843. --------c-2FC019-----------------------------
  2844. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2845.     AX = C019h
  2846.     ???
  2847. Return: BX destroyed
  2848.     ???
  2849. Note:    the first instruction of this function is an indirect jump which points
  2850.       at a RET by default
  2851. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  2852. --------c-2FC01A-----------------------------
  2853. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2854.     AX = C01Ah
  2855. Return: BX destroyed
  2856. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  2857. --------c-2FC01B-----------------------------
  2858. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2859.     AX = C01Bh
  2860. Return: BX destroyed
  2861. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  2862. --------c-2FC01C-----------------------------
  2863. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2864.     AX = C01Ch
  2865.     ???
  2866. Return: AX = ???
  2867.     BX destroyed
  2868. SeeAlso: AX=C000h"PCACHE"
  2869. --------c-2FC01D-----------------------------
  2870. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2871.     AX = C01Dh-C01Fh
  2872. Return: BX destroyed
  2873. Program: PCACHE is the resident print spooler portion of PrintCache by
  2874.       LaserTools; it may use either memory or disk space to spool output
  2875. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2876.       with a commandline switch
  2877. SeeAlso: AX=C000h"PCACHE"
  2878. --------V-2FC020-----------------------------
  2879. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  2880.     AX = C020h
  2881. Return: AL = 00h if successful
  2882.         BX = VxD API Status
  2883.         0000h no error
  2884.         0001h error
  2885.         0100h neither Windows 3.X enhanced mode nor
  2886.             Windows/386 2.x is running
  2887.         0200h VM API entry point not found (VxD not installed)
  2888. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2889.       After Dark will try successive values up to AH=FFh
  2890.     this call resets the VxD API Status to zero
  2891. SeeAlso: AX=1602h,AX=1607h
  2892. Index:    screen saver;AD-DOS
  2893. --------V-2FC050-----------------------------
  2894. INT 2F U - Explosiv 2.00 - INSTALLATION CHECK
  2895.     AX = C050h
  2896. Return: AL = 51h if installed
  2897. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2898.       by Reidar Gresseth and Chris Hook
  2899. Note:    AH=C0h is the default multiplex number, but may be reconfigured to
  2900.       any value from C0h to C9h
  2901. SeeAlso: AX=C052h
  2902. Index:    screen saver;Explosiv
  2903. --------V-2FC052-----------------------------
  2904. INT 2F U - Explosiv 2.00 - UNINSTALL
  2905.     AX = C052h
  2906.     DX:BX = address to return to on successful uninstall
  2907. Return: at specified address if successful
  2908.     AL = 53h on error
  2909. Note:    specified return address must have the segment of the caller's PSP
  2910. SeeAlso: AX=C050h
  2911. Index:    screen saver;Explosiv
  2912. --------V-2FC054-----------------------------
  2913. INT 2F U - Explosiv 2.00 - GET ???
  2914.     AX = C054h
  2915. Return: AL = ???
  2916. Note:    returns value set by AX=C057h
  2917. SeeAlso: AX=C057h
  2918. Index:    screen saver;Explosiv
  2919. --------V-2FC055-----------------------------
  2920. INT 2F U - Explosiv 2.00 - SET BLANKING INTERVAL
  2921.     AX = C055h
  2922.     BX = new interval in clock ticks
  2923. Index:    screen saver;Explosiv
  2924. --------V-2FC056-----------------------------
  2925. INT 2F U - Explosiv 2.00 - SET ???
  2926.     AX = C056h
  2927.     BL = ???
  2928. Index:    screen saver;Explosiv
  2929. --------V-2FC057-----------------------------
  2930. INT 2F U - Explosiv 2.00 - SET ???
  2931.     AX = C057h
  2932.     BL = ???
  2933. SeeAlso: AX=C054h
  2934. Index:    screen saver;Explosiv
  2935. --------V-2FC058-----------------------------
  2936. INT 2F U - Explosiv 2.00 - SET ???
  2937.     AX = C058h
  2938.     BL = ???
  2939. Index:    screen saver;Explosiv
  2940. --------V-2FC059-----------------------------
  2941. INT 2F U - Explosiv 2.00 - CLEAR ???
  2942.     AX = C059h
  2943. Note:    clears flag set by AX=C05Ah
  2944. SeeAlso: AX=C05Ah
  2945. Index:    screen saver;Explosiv
  2946. --------V-2FC05A-----------------------------
  2947. INT 2F U - Explosiv 2.00 - SET ???
  2948.     AX = C05Ah
  2949.     BL = ???
  2950. Note:    sets flag cleared by AX=C059h then stores BL
  2951. SeeAlso: AX=C059h,AX=C05Bh
  2952. Index:    screen saver;Explosiv
  2953. --------V-2FC05B-----------------------------
  2954. INT 2F U - Explosiv 2.00 - SET ???
  2955.     AX = C05Bh
  2956.     BL = ???
  2957. SeeAlso: AX=C05Ah,AX=C05Ch
  2958. Index:    screen saver;Explosiv
  2959. --------V-2FC05C-----------------------------
  2960. INT 2F U - Explosiv 2.00 - SET ???
  2961.     AX = C05Ch
  2962.     BL = ???
  2963. SeeAlso: AX=C05Bh
  2964. Index:    screen saver;Explosiv
  2965. --------d-2FC300DX0000-----------------------
  2966. INT 2F U - SpaceManager - INSTALLATION CHECK
  2967.     AX = C300h
  2968.     DX = 0000h
  2969. Return: AL = FFh if any SpaceManager programs installed
  2970.         BX = 6F73h
  2971.         CX = 6F68h
  2972. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  2973.       Systems, Inc.
  2974. Note:    AH=C3h is the default; SpaceManager programs scan from C3h to FFh for
  2975.       a free multiplex number
  2976. SeeAlso: AX=C300h/DX=0666h
  2977. --------d-2FC300DX0666-----------------------
  2978. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  2979.     AX = C300h
  2980.     DX = 0666h for any SpaceManager prog or program identifier (see below)
  2981.     BX = 4F53h
  2982.     CX = 4F48h
  2983. Return: AL = FFh if BX/CX as specified and specified program installed
  2984.         BX = 6F73h
  2985.         CX = 6F68h
  2986. Notes:    AH=C3h is the default; SpaceManager programs scan from C3h to FFh for
  2987.       a free multiplex number
  2988.     this call is chained if BX,CX, or DX are not as specified above
  2989. SeeAlso: AX=C300h/DX=0000h
  2990.  
  2991. Values for SpaceManager program identifier:
  2992.  9000h    SMOUNT (SuperMount)
  2993.  9001h    SELECTC (SelectCompress)
  2994.  9002h    SUPERX (SuperExchange)
  2995.  9003h    FORTUNE (FortuneTeller)
  2996. --------d-2FC301-----------------------------
  2997. INT 2F U - SpaceManager - ???
  2998.     AX = C301h
  2999.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3000.     ???
  3001. Return: ???
  3002. --------d-2FC302-----------------------------
  3003. INT 2F U - SpaceManager - ENABLE PROGRAM
  3004.     AX = C302h
  3005.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3006. Return: AX destroyed
  3007. SeeAlso: AX=C303h,AX=C306h
  3008. --------d-2FC303-----------------------------
  3009. INT 2F U - SpaceManager - DISABLE PROGRAM
  3010.     AX = C303h
  3011.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3012. Return: AX destroyed
  3013. SeeAlso: AX=C302h,AX=C306h
  3014. --------d-2FC304-----------------------------
  3015. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  3016.     AX = C304h
  3017.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3018. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  3019.     AX destroyed
  3020. --------d-2FC305DX9003-----------------------
  3021. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  3022.     AX = C305h
  3023.     DX = 9003h
  3024. Return: AX destroyed
  3025. --------d-2FC305-----------------------------
  3026. INT 2F U - SpaceManager - ???
  3027.     AX = C305h
  3028.     DX = program identifier (9000h,9001h) (see AX=C300h)
  3029.     ???
  3030. Return: ???
  3031. --------d-2FC306-----------------------------
  3032. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  3033.     AX = C306h
  3034.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3035. Return: AL = current state (00h disabled, FAh enabled)
  3036.     AH destroyed
  3037. SeeAlso: AX=C302h,AX=C303h
  3038. --------d-2FC307DX9001-----------------------
  3039. INT 2F U - SpaceManager - SELECTC - ???
  3040.     AX = C307h
  3041.     DX = 9001h
  3042.     BX = ???
  3043.     CX = ???
  3044.     ???
  3045. Return: ???
  3046. --------d-2FC308DX9001-----------------------
  3047. INT 2F U - SpaceManager - SELECTC - ???
  3048.     AX = C308h
  3049.     DX = 9001h
  3050.     ???
  3051. Return: ???
  3052. --------d-2FC64CBX5553-----------------------
  3053. INT 2F U - Smart Prompt - INSTALLATION CHECK
  3054.     AX = C64Ch
  3055.     BX = 5553h
  3056. Return: AX = 4CC6h if installed
  3057.     BX = 5355h if installed
  3058. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  3059.       an immediate flush of SmartDrive's (and compatible caches') buffers
  3060.       on returning to the DOS prompt
  3061. --------v-2FC900BP0000-----------------------
  3062. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  3063.     AX = C900h
  3064.     BP = 0000h
  3065. Return: AL = FFh if installed
  3066.         BP >= 0014h
  3067. Note:    called by TBSCANX
  3068. SeeAlso: AX=C987h,AX=CA00h
  3069. --------v-2FC987-----------------------------
  3070. INT 2F U - ThunderByte??? - DISINFECT FILE???
  3071.     AX = C987h
  3072.     BX:DX -> filename
  3073.     BX:CX -> virus name
  3074. Return: AX = status
  3075.         0000h successful???
  3076. Note:    called by TBSCANX
  3077. SeeAlso: AX=CA00h
  3078. --------r-2FC9FF-----------------------------
  3079. INT 2F C - StackMan - INSTALLATION BROADCAST
  3080.     AX = C9FFh
  3081.     BL = BCD version number
  3082.     CX = number of stacks
  3083.     DX = stack size in bytes
  3084. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  3085.       which functions as a replacement for the DOS STACK= command as well
  3086.       as permitting multiple TSRs to share a pool of stack space
  3087. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  3088.       its API is available
  3089.     the installation check consists of testing for the string "STACKXXX" at
  3090.       offset 0Ah from the INT B4 handler
  3091. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  3092. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  3093. --------F-2FCA-------------------------------
  3094. INT 2F - FAXPLUS - FAX TSR
  3095.     AH = CAh
  3096.     ???
  3097. Return: ???
  3098. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  3099.       Veldman
  3100. SeeAlso: AH=2Ah"Gammafax"
  3101. --------v-2FCA00BX5442-----------------------
  3102. INT 2F - TBSCANX - INSTALLATION CHECK
  3103.     AX = CA00h
  3104.     BX = 5442h ('TB')
  3105. Return: AL = 00h not installed
  3106.        = FFh installed
  3107.         BX = 7462h ('tb') if BX was 5442h on entry
  3108. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  3109. Note:    programs may perform virus checks on themselves, other program files,
  3110.       or their data files by invoking the TBSCANX API.
  3111. SeeAlso: AX=4653h,AX=C900h
  3112. --------v-2FCA01-----------------------------
  3113. INT 2F - TBSCANX - GET STATUS
  3114.     AX = CA01h
  3115. Return: AH = BCD version number (v2.2+)
  3116.        = CAh for versions before 2.2
  3117.     AL = state (00h = disabled, 01h = enabled)
  3118.     CX = number of signatures which will be searched
  3119. ---v2.0---
  3120.     BX = EMS handle, 0000h if not using EMS
  3121. ---v2.3+---
  3122.     BX = segment of swap area, 0000h if not swapped
  3123.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  3124. SeeAlso: AX=CA02h
  3125. --------v-2FCA02-----------------------------
  3126. INT 2F - TBSCANX - SET STATE
  3127.     AX = CA02h
  3128.     BL = new state (00h = disabled, 01h = enabled)
  3129. SeeAlso: AX=CA01h
  3130. --------v-2FCA03-----------------------------
  3131. INT 2F - TBSCANX - SCAN BUFFER
  3132.     AX = CA03h
  3133.     CX = size of buffer
  3134.     DS:DX -> buffer containing data to scan
  3135. Return: CF clear if no virus signatures found
  3136.         BX,ES destroyed
  3137.     CF set if signature found
  3138.         ES:BX -> ASCIZ virus name (v2.3+)
  3139.         DS:DX -> ASCIZ virus name (v2.0)
  3140.     AX,CX,DX destroyed (v2.3+)
  3141.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  3142. SeeAlso: AX=CA04h
  3143. --------v-2FCA04-----------------------------
  3144. INT 2F - TBSCANX - SCAN FILE
  3145.     AX = CA04h
  3146.     DS:DX -> filename
  3147. Return: CF clear if no virus signatures found
  3148.         BX,ES destroyed
  3149.     CF set if signature found
  3150.         ES:BX -> ASCIZ virus name
  3151.     AX,CX,DX destroyed
  3152. Note:    this function requires at least 4K free memory
  3153. SeeAlso: AX=CA03h
  3154. --------U-2FCAFEBX0000-----------------------
  3155. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  3156.     AX = CAFEh
  3157.     BX = 0000h
  3158. Return: BX = segment of resident code if installed
  3159.        = 0000h if not installed
  3160. SeeAlso: AX=5453h,INT 2D"AMIS"
  3161. --------F-2FCB00-----------------------------
  3162. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  3163.     AX = CB00h
  3164. Return: AL = status
  3165.         00h not installed, OK to install
  3166.         01h not installed, not OK to install
  3167.         FFh installed
  3168. Note:    AH = CBh is the default identifier, but may be reconfigured
  3169. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  3170. --------F-2FCB00BX4D53-----------------------
  3171. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  3172.     AX = CB00h
  3173.     BX = 4D53h
  3174.     CX = 4949h
  3175. Return: AL = status
  3176.         00h not installed, OK to install
  3177.         01h not installed, not OK to install
  3178.         FFh installed
  3179.         BX = 6D73h
  3180.         CX = 6969h
  3181. Note:    this function is equivalent to the standard CASMGR installation check,
  3182.       but uses the additional magic values to identify which CAS is
  3183.       installed
  3184. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h"MTEZ",AX=CB0Eh,AX=CB16h
  3185. --------F-2FCB01-----------------------------
  3186. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  3187.     AX = CB01h
  3188.     DS:DX -> ASCIZ name of task control file
  3189. Return: AX >= 0: event handle
  3190.     AX < 0: error code
  3191. Note:    files needed for an event must be kept until task is complete or error
  3192. SeeAlso: AX=CB0Bh,AX=CB15h
  3193.  
  3194. Error codes (AH = class, AL = subcode, value passed back is 2's complement):
  3195.   Class 00h    --- FAX warnings
  3196.     Subcode 00h    no error
  3197.         02h    bad scanline count
  3198.         03h    page sent with errors, could not retransmit
  3199.         04h    received data lost
  3200.         05h    invalid or missing logo file
  3201.         06h    filename does not match nonstandard format (NSF) header
  3202.         07h    file size does not match NSF header
  3203.   Class 01h    --- DOS warnings (data was sent)
  3204.     Subcode 01h    invalid function
  3205.         05h    access denied
  3206.         06h    invalid handle
  3207.         others    see INT 21/AH=59h
  3208.   Class 02h    --- fatal errors (data not sent)
  3209.     Subcode 00h    multiplex handler failed
  3210.         01h    unknown command
  3211.         02h    bad event handle
  3212.         03h    FIND NEXT attempted before FIND FIRST
  3213.         04h    no more events
  3214.         07h    invalid queue type
  3215.         08h    bad control file
  3216.         09h    communication board busy
  3217.         0Ah    invalid command parameter
  3218.         0Bh    can't uninstall resident code
  3219.         0Ch    file exists
  3220.         80h    unknown task type
  3221.         81h    bad phone number
  3222.         82h    bad .PCX file header
  3223.         83h    unexpected EOF
  3224.         84h    unexpected disconnect
  3225.         85h    too many dialing retries
  3226.         86h    no file specified for send
  3227.         87h    communication board timeout
  3228.         88h    received too many pages (>1023) of data
  3229.         89h    manual connect initiated too long ago
  3230.         8Ah    hardware command set error
  3231.         8Bh    bad NonStandard Format (NSF) header file
  3232.   Class 03h    --- fatal DOS errors
  3233.     Subcode 02h    file not found
  3234.         03h    path not found
  3235.         others    see INT 21/AH=59h
  3236.   Class 04h    --- FAX errors
  3237.     Subcode 01h    remote unit not Group 3 compatible
  3238.         02h    remote unit did not send capabilities
  3239.         03h    other FAX machine incompatible
  3240.         04h    other FAX incapable of file transfers
  3241.         05h    exceeded retrain or FAX resend limit
  3242.         06h    line noise or failure to agree on bit rate
  3243.         07h    remote disconnected after receiving data
  3244.         08h    no response from remote after sending data
  3245.         09h    remote's capabilities incompatible
  3246.         0Ah    no dial tone (v1.2+)
  3247.         0Bh    invalid response from remote unit after sending data
  3248.         0Dh    phone line dead or remote unit disconnected
  3249.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  3250.         11h    invalid command from remote after receiving data
  3251.         15h    tried to receive from incompatible hardware
  3252.         5Ch    received data overflowed input buffer
  3253.         5Dh    remote unexpectedly stopped sending data
  3254.         5Eh    other FAX machine jammed (no data sent)
  3255.         5Fh    remote took too long to send fax scan line
  3256.         63h    can't get through to remote unit
  3257.         64h    user canceled event
  3258.   Class 05h    --- application-specific (v1.2+)
  3259.   ---Intel FAXPOP.EXE
  3260.     Subcode 00h    tried to send while in graphics mode
  3261.         01h    insufficient disk space
  3262.         02h    internal buffer overflow
  3263.   Class 06h    --- CAS implementation-specific (v1.2+)
  3264. --------F-2FCB02-----------------------------
  3265. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  3266.     AX = CB02h
  3267. Return: AX >= 0: event handle of aborted event
  3268.     AX < 0: error code (see AX=CB01h)
  3269. Note:    termination could take up to 30 seconds
  3270. SeeAlso: AX=CB08h,AX=CB10h
  3271. --------F-2FCB05-----------------------------
  3272. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  3273.     AX = CB05h
  3274.     CX = status of events to find
  3275.         0000h successful completion
  3276.         0001h waiting to be processed
  3277.         0002h number has been dialed
  3278.         0003h connection established, sending
  3279.         0004h connection established, receiving
  3280.         0005h event aborted
  3281.         FFFFh find any event, regardless of status
  3282.         other negative values, match error code
  3283.     DH = direction
  3284.         00h chronological order, earliest to latest
  3285.         01h reverse chronological order, latest to earliest
  3286.     DL = queue to search
  3287.         00h task queue
  3288.         01h receive queue
  3289.         02h log queue
  3290. Return: AX = 0000h successful
  3291.         BX = event handle for found event
  3292.     AX < 0       error code (see AX=CB01h)
  3293. SeeAlso: AX=CB06h,AX=CB07h
  3294. --------F-2FCB06-----------------------------
  3295. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  3296.     AX = CB06h
  3297.     DL = queue to search
  3298.         00h task queue
  3299.         01h receive queue
  3300.         02h log queue
  3301. Return: AX = 0000h successful
  3302.         BX = event handle for found event
  3303.     AX < 0       error code (see AX=CB01h)
  3304. Note:    direction of search is same as preceding FIND FIRST call
  3305. SeeAlso: AX=CB05h
  3306. --------F-2FCB07-----------------------------
  3307. INT 2F - Communicating Applications Specification - OPEN FILE
  3308.     AX = CB07h
  3309.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  3310.     CX = receive file number (ignored for task queue and log queue)
  3311.         0000h  open receive control file
  3312.         N       open Nth received data file
  3313.     DL = queue
  3314.         00h task queue
  3315.         01h receive queue control file or received file, as given by CX
  3316.         02h log queue
  3317.         03h group file in task queue (v1.2+)
  3318.         04h group file in log queue (v1.2+)
  3319. Return: AX = 0000h successful
  3320.         BX = DOS file handle for requested file
  3321.     AX < 0       error code (see AX=CB01h)
  3322. Note:    the returned file handle has been opened in read-only mode and should
  3323.       be closed with INT 21/AH=3Eh after use
  3324. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  3325. --------F-2FCB08-----------------------------
  3326. INT 2F - Communicating Applications Specification - DELETE FILE
  3327.     AX = CB08h
  3328.     BX = event handle
  3329.     CX = receive file number
  3330.         0000h delete ALL received files and receive control file
  3331.         N      delete Nth received file
  3332.     DL = queue
  3333.         00h delete control file in task queue and corresponding group file
  3334.         if it exists
  3335.         01h delete file in receive queue, as given by CX
  3336.         02h delete control file in log queue (individual deletions not
  3337.         recommended, to maintain integrity of log) and corresponding
  3338.         group file if it exists
  3339. Return: AX = 0000h successful
  3340.     AX < 0       error code (see AX=CB01h)\
  3341. SeeAlso: AX=CB02h,AX=CB09h
  3342. --------F-2FCB09-----------------------------
  3343. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  3344.     AX = CB09h
  3345.     DL = queue
  3346.         00h delete all control files in task queue, including all group
  3347.         files
  3348.         01h delete all files in receive queue
  3349.         02h delete all control files in log queue, including all group
  3350.         files
  3351. Return: AX = 0000h successful
  3352.     AX < 0       error code (see AX=CB01h)
  3353. SeeAlso: AX=CB08h
  3354. --------F-2FCB0A-----------------------------
  3355. INT 2F - Communicating Applications Specification - GET EVENT DATE
  3356.     AX = CB0Ah
  3357.     BX = event handle
  3358.     DL = queue
  3359.         00h task queue
  3360.         01h receive queue
  3361.         02h log queue
  3362. Return: AX = 0000h successful
  3363.         CX = year
  3364.         DH = month
  3365.         DL = day
  3366.     AX < 0       error code (see AX=CB01h)
  3367. SeeAlso: AX=CB0Bh,AX=CB0Ch
  3368. --------F-2FCB0B-----------------------------
  3369. INT 2F - Communicating Applications Specification - SET TASK DATE
  3370.     AX = CB0Bh
  3371.     BX = event handle (task event only)
  3372.     CX = year
  3373.     DH = month
  3374.     DL = day
  3375. Return: AX = 0000h successful
  3376.     AX < 0       error code (see AX=CB01h)
  3377. Note:    setting a task's date and time to before the current date and time
  3378.       causes it to execute immediately
  3379. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  3380. --------F-2FCB0C-----------------------------
  3381. INT 2F - Communicating Applications Specification - GET EVENT TIME
  3382.     AX = CB0Ch
  3383.     BX = event handle
  3384.     DL = queue
  3385.         00h task queue
  3386.         01h receive queue
  3387.         02h log queue
  3388. Return: AX = 0000h successful
  3389.         CH = hour
  3390.         CL = minute
  3391.         DH = second
  3392.         DL = 00h
  3393.     AX < 0       error code (see AX=CB01h)
  3394. SeeAlso: AX=CB0Ah,AX=CB0Dh
  3395. --------F-2FCB0D-----------------------------
  3396. INT 2F - Communicating Applications Specification - SET TASK TIME
  3397.     AX = CB0Dh
  3398.     BX = event handle (task events only)
  3399.     CH = hour
  3400.     CL = minute
  3401.     DH = second
  3402.     DL unused
  3403. Return: AX = 0000h successful
  3404.     AX < 0       error code (see AX=CB01h)
  3405. Note:    setting a task's date and time to before the current date and time
  3406.       causes it to execute immediately
  3407. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  3408. --------F-2FCB0E-----------------------------
  3409. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  3410.     AX = CB0Eh
  3411.     DS:DX -> 256-byte buffer
  3412. Return: AX = 0000h successful
  3413.         buffer filled
  3414.     AX < 0       error code (see AX=CB01h)
  3415.  
  3416. Format of external data block:
  3417. Offset    Size    Description
  3418.  00h    BYTE    CAS major version
  3419.  01h    BYTE    CAS minor version
  3420.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  3421.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  3422.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  3423.  60h 32 BYTEs    ASCIZ default sender name
  3424.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  3425.  95h 107 BYTEs    reserved
  3426. --------F-2FCB0F-----------------------------
  3427. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  3428.     AX = CB0Fh
  3429.     DL = subfunction
  3430.         00h get current autoreceive state
  3431.         01h set autoreceive state
  3432.         DH = number of rings before answer, 00h = never
  3433. Return: AX = 0000h autoreceive disabled
  3434.     AX = N       number of rings before answer
  3435.     AX < 0       error code (see AX=CB01h)
  3436. --------F-2FCB10-----------------------------
  3437. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  3438.     AX = CB10h
  3439.     DS:DX -> 512-byte buffer
  3440. Return: AX = 0000h successful
  3441.         BX = event handle of current event or negative error code if
  3442.             no current event
  3443.         buffer filled
  3444.     AX < 0       error code (see AX=CB01h)
  3445. SeeAlso: AX=CB02h,AX=CB0Dh
  3446.  
  3447. Format of status area:
  3448. Offset    Size    Description
  3449.  00h    BYTE    event type
  3450.         00h send
  3451.         01h receive
  3452.         02h polled send
  3453.         03h polled receive
  3454.         04h to 7Fh reserved
  3455.         FFh serious hardware error
  3456.  01h    BYTE    transfer type
  3457.         00h 200x200 dpi, FAX mode
  3458.         01h 100x200 dpi, FAX mode
  3459.         02h file transfer mode
  3460.         03h to 7Fh reserved
  3461.  02h    WORD    event status
  3462.         0000h completed successfully
  3463.         0001h waiting
  3464.         0002h number dialed
  3465.         0003h connected, sending
  3466.         0004h connected, receiving
  3467.         0005h aborted
  3468.         0006h to 007Fh reserved
  3469.         0080h to 7FFFh application-specific events
  3470.         8000h to FFFFh error codes
  3471.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  3472.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  3473.  08h    WORD    number of files to transfer, max 7FFFh
  3474.  0Ah    WORD    offset of file transfer record
  3475.  0Ch 47 BYTEs    ASCIZ phone number to call
  3476.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  3477.  7Bh    BYTE    reserved (00h)
  3478.  7Ch    BYTE    connect time, seconds
  3479.  7Dh    BYTE    connect time, minutes
  3480.  7Eh    BYTE    connect time, hours
  3481.  7Fh    DWORD    total number of pages in all files
  3482.  83h    DWORD    pages already transmitted
  3483.  87h    WORD    number of files already transmitted
  3484.  89h    BYTE    cover page flag
  3485.         00h don't transmit cover page
  3486.         01h transmit cover page
  3487.         02h to 7Fh reserved
  3488.  8Ah    WORD    total number of transmission errors
  3489.  8Ch 78 BYTEs    reserved (zeros)
  3490.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  3491.  EFH 32 BYTEs    ASCIZ destination name
  3492. 10Fh 32 BYTEs    ASCIZ sender name
  3493. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  3494. 17Fh 128 BYTEs    file transfer record for current event (see below)
  3495.  
  3496. Format of file transfer record:
  3497. Offset    Size    Description
  3498.  00h    BYTE    file type (ignored unless FAX)
  3499.         00h ASCII
  3500.         01h PCX
  3501.         02h DCX
  3502.         03h to 7Fh reserved
  3503.  01h    BYTE    text size for ASCII FAX file
  3504.         00h = 80 columns by 66 lines (11 inches)
  3505.         01h = 132 columns by 88 lines (11 inches)
  3506.         02h to 7Fh reserved
  3507.  02h    BYTE    status of file
  3508.         00h untouched
  3509.         01h opened
  3510.         02h moved
  3511.         03h deleted
  3512.         04h not yet received
  3513.         05h to 7Fh reserved
  3514.  03h    DWORD    bytes already transmitted
  3515.  07h    DWORD    file size in bytes
  3516.  0Bh    WORD    pages alread transmitted
  3517.  0Dh    WORD    number of pages in file
  3518.  0Fh 80 BYTEs    ASCIZ filename
  3519.  5Fh    BYTE    1/8 inch page length
  3520.         if page length below set to 01h through 7Fh, this value
  3521.         specifies additional 1/8 inch increments to page length
  3522.  60h    BYTE    page length
  3523.         00h = 11 inches
  3524.         01h to 7Fh = page length is this number of inches plus value of
  3525.             1/8 inch field above
  3526.         80h to FEh reserved
  3527.         FFh = ASCII pages ending with formfeed
  3528.  61h 31 BYTEs    reserved (zeros)
  3529. --------F-2FCB11-----------------------------
  3530. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  3531.     AX = CB11h
  3532.     DL = queue to get status of
  3533.         00h task queue
  3534.         01h receive queue
  3535.         02h log queue
  3536.         03h send events (v1.2+)
  3537.         04h receive events (v1.2+)
  3538. Return: AX >= 0     total number of changes made to queue, modulo 32768
  3539.         BX = number of control files currently in queue
  3540.         CX = number of received files (zero for task and log queues)
  3541.     AX < 0    error code (see AX=CB01h)
  3542. SeeAlso: AX=CB12h
  3543. --------F-2FCB11DL03-------------------------
  3544. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  3545.     AX = CB11h
  3546.     DL = 03h
  3547. Return: AX = number of successful sends since resident manager started
  3548.     BX = number of unsuccessful sends, including warnings
  3549. SeeAlso: AX=CB11h/DL=04h
  3550. --------F-2FCB11DL04-------------------------
  3551. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  3552.     AX = CB11h
  3553.     DL = 04h
  3554. Return: AX = number of received file events since resident manager started
  3555.     BX = number of received FAX events
  3556. SeeAlso: AX=CB11h/DL=03h
  3557. --------F-2FCB12-----------------------------
  3558. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  3559.     AX = CB12h
  3560.     DS:DX -> 128-byte status buffer (see below)
  3561. Return: AX = 0000h successful
  3562.         buffer filled with hardware-dependent status information
  3563.        < 0       error code (see AX=CB01h)
  3564. SeeAlso: AX=CB10h,AX=CB11h
  3565.  
  3566. Format of status buffer for Intel Connection CoProcessor:
  3567. Offset    Size    Description
  3568.  00h    BYTE    Connection CoProcessor connection status flags (see below)
  3569.  01h    BYTE    number of kilobytes of free buffer space
  3570.  02h    BYTE    page buffer status
  3571.         bit 7: Connection CoProcessor has documents to send
  3572.         bits 6-0: number of pages in buffer
  3573.  03h    BYTE    number of retries left for dialing number
  3574.  04h    BYTE    page number to retransmit
  3575.  05h    BYTE    communications status (see below)
  3576.  06h    BYTE    baud rate
  3577.         bit 7: reserved
  3578.         bits 6-4: baud rate
  3579.             000 = 300 baud    (V.21 SDLC or HDLC mode)
  3580.             100 = 2400 baud (V.27 ter)
  3581.             101 = 4800 baud (V.27 ter)
  3582.             110 = 7200 baud (V.29)
  3583.             111 = 9600 baud (V.29)
  3584.         bits 3-0: reserved, should be 0110
  3585.  07h  3 BYTEs    reserved
  3586.  0Ah    BYTE    Connection CoProcessor hardware status (see below)
  3587.  0Bh    BYTE    Connection CoProcessor switch states (see below)
  3588.  0Ch    BYTE    communications flags (see below)
  3589.  0Dh    BYTE    reserved
  3590.  0Eh    WORD    error count (only valid while busy, reset when idle)
  3591.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  3592.  14h    BYTE    'A' if Connection CoProcessor board present
  3593.  15h  9 BYTEs    reserved
  3594.  1Eh 21 BYTEs    ASCIZ CCITT identification
  3595.  33h 77 BYTEs    reserved
  3596. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3597.       by examining the byte at offset 14h
  3598.  
  3599. Format of status buffer for Intel SatisFAXtion board:
  3600. Offset    Size    Description
  3601.  00h    BYTE    SatisFAXtion connection status flags (see below)
  3602.  01h    BYTE    SatisFAXtion board state (see below)
  3603.  02h    BYTE    number of KB free in buffer
  3604.  03h    BYTE    number of pages or files in buffer
  3605.  04h    BYTE    number of redials remaining on current number
  3606.  05h    BYTE    FAX page number to retransmit
  3607.  06h    BYTE    current page/file in block transfer
  3608.  07h    BYTE    number of rings received (only if auto-answer enabled)
  3609.  08h    WORD    error count
  3610.  0Ah    DWORD    length of file being transferred
  3611.  0Eh  6 BYTEs    reserved
  3612.  14h    BYTE    'B' if SatisFAXtion board present
  3613.  15h 13 BYTEs    ASCIZ transfer agent name
  3614.  22h  5 BYTEs    ASCIZ transfer agent version number
  3615.  27h 13 BYTEs    ASCIZ resident loader name
  3616.  34h  5 BYTEs    ASCIZ resident loader version number
  3617.  39h 21 BYTEs    ASCIZ remote CSID
  3618.  4Eh 13 BYTEs    ASCIZ resident manager name
  3619.  5Bh  5 BYTEs    ASCIZ resident manager version number
  3620.  60h 32 BYTEs    reserved
  3621. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3622.       by examining the byte at offset 14h
  3623.  
  3624. Bitfields for Connection CoProcessor connection status flags:
  3625.  bit 7    hardware busy sending or receiving
  3626.  bit 6    last page of data
  3627.  bit 5    no data on current page
  3628.  bit 4    retransmit request for current page being transmitted
  3629.  bit 3    NSF (nonstandard file) mode active
  3630.  bits 2-0 reserved
  3631.  
  3632. Bitfields for communications status:
  3633.  bit 7    originating call
  3634.  bit 6    FAX message to be sent
  3635.  bit 5    on line
  3636.  bit 4    ring detected and receive enabled
  3637.  bit 3    buffer dumped on receive
  3638.  bits 2-0    hardware sequence state
  3639.         000 idle
  3640.         001 dial
  3641.         010 answer
  3642.         011 transmit
  3643.         100 receive
  3644.         101 pre-message
  3645.         110 post-message
  3646.         111 disconnect
  3647.  
  3648. Bitfields for Connection CoProcessor hardware status:
  3649.  bit 7    modem option installed
  3650.  bit 6    Connection CoProcessor has control of DAA (not latched)
  3651.  bit 5    on line (not latched)
  3652.  bit 4    ring detected (not latched)
  3653.  bit 3    data in command buffer (not latched)
  3654.  bit 2    set if using DMA channel 1, clear if using DMA channel 3
  3655.  bit 1    line length compensation bit 1 set (not latched)
  3656.  bit 0    line length compensation bit 0 set (not latched)
  3657.  
  3658. Bitfields for Connection CoProcessor switch states:
  3659.  bit 7: reserved
  3660.  bit 6: unused
  3661.  bit 5: spare switch open
  3662.  bit 4: FAX ADR1 switch open
  3663.  bit 3: FAX ADR0 switch open
  3664.  bit 2: alternate interrupt switch open
  3665.  bit 1: COM SEL 1 switch open
  3666.  bit 0: COM SEL 0 switch open
  3667. Note: valid combinations of bits 0-2 are
  3668.     000  COM2 IRQ3 IObase 2F8h
  3669.     001  COM1 IRQ4 IObase 3F8h
  3670.     010  COM4 IRQ3 IObase 2E8h
  3671.     011  COM3 IRQ4 IObase 3E8h
  3672.     110  COM4 IRQ2 IObase 2E8h
  3673.     111  COM3 IRQ5 IObase 3E8h
  3674.  
  3675. Bitfields for communications flags:
  3676.  bit 7    reserved
  3677.  bit 6    auxiliary relay forced ON
  3678.  bit 5    modem select relay forced ON
  3679.  bit 4    offhook relay forced ON
  3680.  bit 3    9600 bps enabled
  3681.  bit 2    7200 bps enabled
  3682.  bit 1    4800 bps enabled
  3683.  bit 0    2400 bps enabled
  3684.  
  3685. Bitfields for SatisFAXtion connection status flags:
  3686.  bit 7    busy in T.30 CCITT fax protocol
  3687.  bit 6    data on current page/file (only used for block xfers)
  3688.  bit 5    retransmission of last page requested
  3689.  bit 4    in file transfer mode
  3690.  bit 3    data in buffer
  3691.  bit 2    data buffer dumped on receive
  3692.  bit 1    200x100 dpi resolution instead of 200x200 dpi
  3693.  bit 0    data modem in use, FAX image modem not available
  3694.  
  3695. Bitfields for SatisFAXtion board state:
  3696.  bit 7    reserved
  3697.  bit 6    handset jack active, data and FAX modems not available
  3698.  bits 5-3  current bit rate
  3699.         000     300 bps (V.21 HDLC)
  3700.         100 2400 bps (V.27 ter)
  3701.         101 4800 bps (V.27 ter)
  3702.         110 7200 bps (V.29)
  3703.         111 9600 bps (V.29)
  3704.  bits 2-0  T.30 CCITT protocol state
  3705.         000 idle
  3706.         001 dialing
  3707.         010 answering
  3708.         011 transmitting
  3709.         100 receiving
  3710.         101 pre-message
  3711.         110 post-message
  3712.         111 disconnect
  3713. --------F-2FCB13DL00-------------------------
  3714. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  3715.     AX = CB13h
  3716.     DL = 00h
  3717. Return: AX = 0040h in progress
  3718.        >= 0       passed
  3719.        < 0       hardware-dependent failure code (see below)
  3720. SeeAlso: AX=CB13h/DL=01h
  3721.  
  3722. Intel Connection CoProcessor failure codes:
  3723.  bit 3    9600 bps FAX modem module failed
  3724.  bit 2    SDLC chip failed
  3725.  bit 1    RAM failed
  3726.  bit 0    ROM checksum failed
  3727.  
  3728. Intel SatisFAXtion failure codes:
  3729.  bit 1    2400 bps data modem failed
  3730.  bit 0    9600 bps FAX modem failed
  3731. --------F-2FCB13DL01-------------------------
  3732. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  3733.     AX = CB13h
  3734.     DL = 01h
  3735. Return: AX = 0000h successfully started
  3736.        < 0       error code (see AX=CB01h)
  3737. SeeAlso: AX=CB13h/DL=00h
  3738. --------F-2FCB14-----------------------------
  3739. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  3740.     AX = CB14h
  3741.     BX = event handle
  3742.     CX = receive file number
  3743.          0001h first received file
  3744.          N       Nth received file
  3745.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  3746. Return: AX = 0000h successful
  3747.        < 0       error code (see AX=CB01h)
  3748. --------F-2FCB15-----------------------------
  3749. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  3750.     AX = CB15h
  3751.     DS:DX -> variable-length data area (see below)
  3752. Return: AX >= 0 event handle
  3753.        < 0    error code (see AX=CB01h)
  3754. SeeAlso: AX=CB01h
  3755.  
  3756. Format of data area:
  3757. Offset    Size    Description
  3758.  00h    BYTE    transfer type
  3759.         00h = 200x200 dpi, fax mode
  3760.         01h = 100x200 dpi, fax mode
  3761.         02h = file transfer mode
  3762.         03h to 7Fh reserved
  3763.  01h    BYTE    text size
  3764.         00h = 80 columns
  3765.         01h = 132 columns
  3766.         02h to 7Fh reserved
  3767.  02h    WORD    time to send (DOS packed time format, see INT 21/AX=5700h)
  3768.  04h    WORD    date to send (DOS packed date format, see INT 21/AX=5700h)
  3769.  06h 32 BYTEs    ASCIZ destination name
  3770.  26h 80 BYTEs    ASCIZ name of file to send
  3771.  76h 47 BYTEs    ASCIZ phone number to dial
  3772.  A5h 64 BYTEs    ASCIZ application-specific tag string
  3773.  E5h    BYTE    reserved (00h)
  3774.  E6h    BYTE    cover page
  3775.         00h don't send cover page
  3776.         01h send cover page
  3777.         02h to 7Fh reserved
  3778.  E7h 23 BYTEs    reserved (zeros)
  3779.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  3780.         set to 01h)
  3781. --------F-2FCB16BX1234-----------------------
  3782. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  3783.     AX = CB16h
  3784.     BX = 1234h
  3785.     CX = 5678h
  3786.     DX = 9ABCh
  3787. Return: AX = 0000h successful
  3788.        < 0       error code
  3789. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  3790. SeeAlso: AX=C000h"MTEZ",AX=CB00h
  3791. Index:    uninstall;CAS Manager
  3792. --------F-2FCB17-----------------------------
  3793. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  3794.     AX = CB17h
  3795.     BX = event handle
  3796.     CL = cover page status
  3797.         00h not read
  3798.         01h read by user
  3799. Return: AX = 0000h successful
  3800.        < 0       error code
  3801. --------F-2FCB80-----------------------------
  3802. INT 2F - Intel SatisFAXtion CASMGR - ???
  3803.     AX = CB80h
  3804.     ???
  3805. Return: ???
  3806. --------F-2FCB81-----------------------------
  3807. INT 2F - Intel SatisFAXtion CASMGR - ???
  3808.     AX = CB81h
  3809.     ???
  3810. Return: ???
  3811. --------F-2FCB82-----------------------------
  3812. INT 2F - Intel SatisFAXtion CASMGR - ???
  3813.     AX = CB82h
  3814.     ???
  3815. Return: ???
  3816. --------F-2FCBDCBL56-------------------------
  3817. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  3818.     AX = CBDCh
  3819.     BL = 56h
  3820.     BH = line number (starts with 1)
  3821.     CX:DX -> 32-byte status buffer or 80 character string
  3822. Return: AX = number of cards installed, or FFFFh on error
  3823. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  3824.       performance multi-card FAX solution for OEMs.
  3825. Note:    defaults to AH=CBh but can be changed
  3826. SeeAlso: AX=CBDDh,AX=DA00h
  3827. --------F-2FCBDDBL56-------------------------
  3828. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  3829.     AX = CBDDh
  3830.     BL = 56h
  3831.     BH = ?
  3832.     CX:DX -> command to execute
  3833. Return: AX = status
  3834.         0000h success
  3835.         FFFFh on error
  3836. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  3837. --------c-2FCC--SI5453-----------------------
  3838. INT 2F U - PC-Kwik Programs - API
  3839.     AH = CCh
  3840.     SI = 5453h or 7473h
  3841.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  3842.     DL = program identifier
  3843.         00h all installed PowerPak programs
  3844.         01h SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  3845.         02h PCKSPL (print spooler)
  3846.         04h PCKSCRN (screen accelerator)
  3847.         05h PCKKEY (keyboard enhancer)
  3848.         06h PCKRAMD (RAM disk)
  3849.         08h PCKWIK.SYS
  3850.         10h PCKCDROM (CD-ROM support for SUPERPCK)
  3851. Return: SI = 7473h
  3852.     other registers vary by function
  3853. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3854.       thus supports this call
  3855. SeeAlso: INT 21/AH=2Bh/CX=4358h
  3856. ----------2FCD00-----------------------------
  3857. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  3858.     AX = CD00h
  3859. Return: AL = 00h not installed, OK to install
  3860.          01h not installed, not OK to install
  3861.          FFh installed
  3862. SeeAlso: AX=CD02h"Image"
  3863. --------P-2FCD00-----------------------------
  3864. INT 2F - LaserPort Interface - INSTALLATION CHECK
  3865.     AX = CD00h
  3866. Return: AL = status
  3867.         FFh installed
  3868. SeeAlso: AX=CD0Fh"LaserPort"
  3869. --------U-2FCD00-----------------------------
  3870. INT 2F - SWELL.EXE - INSTALLATION CHECK
  3871.     AX = CD00h
  3872. Return: AX = 00FFh installed
  3873.         BH = major version
  3874.         BL = minor version
  3875. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  3876.       process with INT 21/AH=4Bh
  3877. ----------2FCD01-----------------------------
  3878. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  3879.     AX = CD01h
  3880.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  3881. Return: AL = 00h successful
  3882.         CX:BX -> internal character device name
  3883.        = 80h error
  3884. --------U-2FCD01-----------------------------
  3885. INT 2F - SWELL.EXE - SUSPEND ONCE
  3886.     AX = CD01h
  3887. Return: AX = 0000h
  3888. SeeAlso: AX=CD02h"SWELL"
  3889. ----------2FCD02-----------------------------
  3890. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  3891.     AX = CD02h
  3892. Return: AL = 00h/01h successful
  3893.         BH = major version number (BCD)
  3894.         BL = minor version number (BCD)
  3895.        = 80h error
  3896. Note:    if return AL = 01h, the IPI supports network redirection
  3897. SeeAlso: AX=CD00h"Image"
  3898. --------U-2FCD02-----------------------------
  3899. INT 2F - SWELL.EXE - SUSPEND
  3900.     AX = CD02h
  3901. Return: AX = 0000h
  3902. SeeAlso: AX=CD03h"SWELL"
  3903. ----------2FCD03-----------------------------
  3904. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  3905.     AX = CD03h
  3906.     BX = scan line
  3907.     CX = requested density in dots per inch (300, 600, or 1200)
  3908. Return: AL = 00h successful
  3909.         CX = density at which scan line was mapped
  3910.         ES:DI -> start of scan line
  3911.     AL = 80h unsuccessful
  3912.        = 81h scan line out of range
  3913.        = 82h unsupported scan line density
  3914.        = 83h out of memory
  3915. SeeAlso: AX=CD04h"Image"
  3916. --------U-2FCD03-----------------------------
  3917. INT 2F - SWELL.EXE - ACTIVATE
  3918.     AX = CD03h
  3919. Return: AX = 0000h
  3920. SeeAlso: AX=CD02h"SWELL"
  3921. ----------2FCD04-----------------------------
  3922. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  3923.     AX = CD04h
  3924.     CX:BX -> structure (see below)
  3925. Return: AL = 00h successful
  3926.        = 80h unsuccessful
  3927.        = 81h scan line out of range
  3928.        = 82h unsupported scan line density
  3929.        = 83h out of memory
  3930.        = 84h unrecognized source
  3931.        = 85h initialization error
  3932. SeeAlso: AX=CD03h"Image"
  3933.  
  3934. Format of structure:
  3935. Offset    Size    Description
  3936.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  3937.  02h    DWORD    pointer to image data
  3938.  06h    WORD    scan line on which to place
  3939.  08h    WORD    bit offset from start of scan line at which to place
  3940.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  3941.  0Ch    WORD    width in bits of data
  3942.  0Eh    WORD    source logical page number
  3943.  10h    WORD    source handle (only if source in expanded memory)
  3944.  12h    WORD    source offset (only if source in expanded memory)
  3945. --------U-2FCD04-----------------------------
  3946. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  3947.     AX = CD04h
  3948. Return: AX = 0000h
  3949. SeeAlso: AX=CD05h"SWELL"
  3950. ----------2FCD05-----------------------------
  3951. INT 2F - Intel Image Processing Interface - PRINT PAGE
  3952.     AX = CD05h
  3953. Return: AL = 00h successful
  3954.        = 80h unsuccessful
  3955. Note:    page image is retained, so multiple calls will print multiple copies of
  3956.       the page
  3957. SeeAlso: AX=CD06h"Image"
  3958. --------U-2FCD05-----------------------------
  3959. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  3960.     AX = CD05h
  3961. Return: AX = 0000h
  3962. SeeAlso: AX=CD04h"SWELL"
  3963. ----------2FCD06-----------------------------
  3964. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  3965.     AX = CD06h
  3966. Return: AL = 00h successful
  3967.        = 80h unsuccessful
  3968. Note:    palette is reset to default
  3969. SeeAlso: AX=CD09h"Image"
  3970. --------U-2FCD06-----------------------------
  3971. INT 2F - SWELL.EXE - UNINSTALL
  3972.     AX = CD06h
  3973. Return: AX = 0000h uninstalled
  3974.        = 8002h programs still swapped, not uninstalled
  3975. ----------2FCD07-----------------------------
  3976. INT 2F - Intel Image Processing Interface - reserved
  3977.     AX = CD07h
  3978. --------U-2FCD07-----------------------------
  3979. INT 2F - SWELL.EXE - GET INFO
  3980.     AX = CD07h
  3981.     ES:BX -> 32-byte buffer for info
  3982. Return: AX = 0000h successful
  3983.         ES:BX buffer filled
  3984.        = 8001h buffer wrong size
  3985.  
  3986. Format of info buffer:
  3987. Offset    Size    Description
  3988.  00h    WORD    20h  (total size of buffer)
  3989.  02h    BYTE    suspend-once mode active if nonzero
  3990.  03h    BYTE    00h active, 01h suspended
  3991.  04h    BYTE    00h quiet, 01h verbose
  3992.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  3993.  06h 26 BYTEs    unused???
  3994. ----------2FCD08-----------------------------
  3995. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  3996.     AX = CD08h
  3997.     CX:BX -> structure (see below)
  3998. Return: AL = 00h successful
  3999.        = 80h unsuccessful
  4000.        = 81h scan line out of range
  4001.        = 82h unsupported scan line density
  4002.        = 83h out of memory
  4003.        = 84h unrecognized source
  4004.        = 85h initialization error
  4005. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  4006.  
  4007. Format of structure:
  4008. Offset    Size    Description
  4009.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4010.  02h    DWORD    pointer to image data
  4011.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  4012.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  4013.  0Ah    WORD    left cropping (currently must be zero)
  4014.  0Ch    WORD    top cropping (currently must be zero)
  4015.  0Eh    WORD    width (currently must be 8000h)
  4016.  10h    WORD    height (currently must be 8000h)
  4017.  12h    WORD    horizontal size of image in 1200 dpi units
  4018.  14h    WORD    vertical size of image in 1200 dpi units
  4019.  16h    WORD    aspect ratio (currently reserved)
  4020.  18h    WORD    initialization flag (if 01h, initialization is performed)
  4021.  1Ah    WORD    pixels per line of source data
  4022.  1Ch    WORD    number of scan lines in source data
  4023.  1Eh    WORD    number of scan lines in packet
  4024.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  4025.  22h    WORD    pixels per byte (1,2,4, or 8)
  4026.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  4027.  26h    WORD    source page number (if in expanded memory)
  4028.  28h    WORD    source handle (if in expanded memory)
  4029.  2Ah    WORD    source offset (if in expanded memory)
  4030. --------U-2FCD08-----------------------------
  4031. INT 2F - SWELL.EXE - UNUSED
  4032.     AX = CD08h
  4033. Return: AX = FFFFh (error)
  4034. ----------2FCD09-----------------------------
  4035. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  4036.     AX = CD09h
  4037.     CX:BX -> structure (see below)
  4038. Return: AL = 00h successful
  4039.        = 80h unsuccessful
  4040. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  4041.  
  4042. Format of structure:
  4043. Offset    Size    Description
  4044.  00h    BYTE    style
  4045.         44h ('D') diamond style
  4046.         4Ch ('L') line style
  4047.  01h    BYTE    reserved (00h)
  4048.  02h    WORD    frequency in lines per inch [sic]
  4049.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  4050.  04h    WORD    screen angle in degrees (-360 to 360)
  4051.         currently coerced to nearest of -45, 0, 45, or 90
  4052. --------U-2FCD09-----------------------------
  4053. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  4054.     AX = CD09h
  4055. Return: AX = 0000h
  4056. SeeAlso: AX=CD0Ah"SWELL"
  4057. ----------2FCD0A-----------------------------
  4058. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  4059.     AX = CD0Ah
  4060.     CX:BX -> palette structure (see below)
  4061. Return: AL = 00h successful
  4062.        = 80h unsuccessful
  4063. SeeAlso: AX=CD09h"Image Processing"
  4064.  
  4065. Format of palette structure:
  4066. Offset    Size    Description
  4067.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  4068.  01h    2**N    palette translation values, one per possible pixel value
  4069. --------U-2FCD0A-----------------------------
  4070. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  4071.     AX = CD0Ah
  4072. Return: AX = 0000h
  4073. SeeAlso: AX=CD09h"SWELL"
  4074. --------P-2FCD0F-----------------------------
  4075. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  4076.     AX = CD0Fh
  4077.     BL = function
  4078.         01h enable
  4079.         02h disable
  4080.         03h ???
  4081. Return: AL = status
  4082.         00h success
  4083. SeeAlso: AX=CD00h"LaserPort"
  4084. --------K-2FCF00-----------------------------
  4085. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  4086.     AX = CF00h
  4087. Return: AL = FFh if installed
  4088. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  4089. Note:    values in AL other than 00h cause an immediate return without modifying
  4090.       any registers
  4091. --------G-2FD000-----------------------------
  4092. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  4093.     AX = D000h
  4094. Return: CF set on error
  4095.         all other registers must be unchanged)
  4096.     CF clear if successful
  4097.         AL = FFh
  4098.         AH = driver semaphor
  4099.         00h driver is not active
  4100.         01h driver is active
  4101.         BX = CS of the driver
  4102.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  4103.         DL = buffer semaphor
  4104.         00h driver is not pending
  4105.         01h driver is pending between functions 02h and 03h
  4106.         DH = show semaphor
  4107.         00h driver is not pending
  4108.         01h driver is pending between functions 04h and 05h
  4109. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4110.       Schemmer, including a memory monitor, an interpreter and a
  4111.       disassembler
  4112. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  4113.       FFh; the default is D0h for the display driver and D1h for the
  4114.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  4115.       numbers used)
  4116.     this function MUST be reentrant, as MDEBUG calls it after every popup
  4117.       before any other actions.  The handler should not change any
  4118.       registers if the display is in an unsupported mode or in a mode
  4119.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  4120.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  4121.       not call any of the other functions for this popup session.
  4122.     MDEBUG will not call the other functions if the returned version is
  4123.       less than the actual version of MDEBUG.
  4124.     if the driver is reentrant, DL and DH should be 00h
  4125. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  4126. --------M-2FD000-----------------------------
  4127. INT 2F - ZWmous - INSTALLATION CHECK
  4128.     AX = D000h
  4129. Return: AX = 5A57h ("ZW") if installed
  4130.         BX = segment of resident code
  4131. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  4132.       with many non-mouse applications by entering the letter under the
  4133.       mouse cursor on button presses
  4134. SeeAlso: INT 33/AX=0003h
  4135. --------N-2FD000-----------------------------
  4136. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  4137.     AX = D000h
  4138. Return: AL = FFh if CD/Networker TSR is loaded
  4139.     BX = 4D44h ("MD") signature
  4140.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  4141.     DX = bitmap identifying all loaded CD/Networker TSRs.
  4142. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  4143.       resident redirector TSR and a transient program that controls the
  4144.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  4145.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  4146. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  4147. --------G-2FD001-----------------------------
  4148. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  4149.     AX = D001h
  4150. Return: CF set on error
  4151.     AL = driver semaphor
  4152.     AH = buffer semaphor
  4153. Notes:    MDEBUG calls this function after every successful call of the function
  4154.       00h. The function should reset all internal data and the status of
  4155.       the driver. If this function returns an error, MDEBUG will not call
  4156.       the other functions in this popup session.
  4157.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4158.       FFh; the default is D0h for the display driver and D1h for the
  4159.       command driver
  4160. SeeAlso: AX=D000h
  4161. --------G-2FD002-----------------------------
  4162. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  4163.     AX = D002h
  4164. Return: CF set on error
  4165.     CF clear if successful
  4166.         display memory saved and display switched to one of the text modes
  4167.           02h, 03h or 07h.
  4168. Note:    MDEBUG calls this function only once every popup session before
  4169.       displaying its windows.
  4170. SeeAlso: AX=D000h,AX=D003h
  4171. --------N-2FD002BX4D44-----------------------
  4172. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  4173.     AX = D002h
  4174.     BX = 4D44h
  4175.     DX = bitmap identifying one loaded CD/Networker TSR
  4176. Return: ES:DI -> data area owned by TSR
  4177. Note:    the format of the data area changes with each minor revision, so it
  4178.       cannot be counted on
  4179. SeeAlso: AX=D000h"Lotus"
  4180. --------G-2FD003-----------------------------
  4181. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  4182.     AX = D003h
  4183. Return: CF set on error
  4184.     CF clear if successful
  4185.         display restored to the mode it was in before calling AX=D002h and
  4186.           the display memory is restored
  4187. Note:    MDEBUG calls this function only once every popup session just before
  4188.      it exits to normal DOS.
  4189. SeeAlso: AX=D000h,AX=D002h
  4190. --------G-2FD004-----------------------------
  4191. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  4192.     AX = D004h
  4193. Return: CF set on error
  4194.     CF clear if successful
  4195.         display switched to mode it was in before calling AX=D002h and the
  4196.           display memory is restored
  4197. Note:    This function needn't save the display memory before changing it.
  4198. SeeAlso: AX=D000h,AX=D005h
  4199. --------G-2FD005-----------------------------
  4200. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  4201.     AX = D005h
  4202. Return: CF set on error
  4203.     CF clear if successful
  4204.         display restored to mode it was in before calling AX=D004h
  4205. Note:    This function needn't save or change the display memory
  4206. SeeAlso: AX=D000h,AX=D004h
  4207. --------G-2FD0-------------------------------
  4208. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  4209.     AH = D0h
  4210.     AL = 06h-7Fh
  4211. Note:    these functions are reserved for future use
  4212. --------G-2FD0-------------------------------
  4213. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  4214.     AH = D0h
  4215.     AL = 80h-FFh
  4216. Note:    these functions numbers are reserved for user defined features (e.g.
  4217.       communication between the transient und resident parts of the driver)
  4218. --------G-2FD100-----------------------------
  4219. INT 2F C - MDEBUG command driver - GET STATUS
  4220.     AX = D100h
  4221.     BX = version of MDEBUG (BH = major, BL = minor)
  4222.     CX = command driver counter
  4223. ---v1.60+---
  4224.     DS:SI -> MDEBUG identification table (see below)
  4225.     ES = segment of display memory used by MDEBUG
  4226.     DI = size of video mode used by MDEBUG
  4227.         (high byte = lines, low byte = columns)
  4228. Return: DL = FFh
  4229.     BX = version number of the driver if it is less than the version in BX,
  4230.          else unchanged
  4231.     CX incremented
  4232. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4233.       Schemmer, including a memory monitor, an interpreter, and a
  4234.       disassembler
  4235. Notes:    called by MDEBUG at start of popup session; if the version number
  4236.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  4237.       not call any of the other functions during this popup session
  4238.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4239.       FFh; the default is D0h for the display driver and D1h for the
  4240.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  4241.       actually used)
  4242.     this function must end with a far call to the old INT 2F handler after
  4243.       changing the registers
  4244.     this function MUST be reentrant
  4245.     command drivers must also declare the following data at the given
  4246.       offsets in the code segment
  4247.         100h  3 BYTEs    JMP-command in .COM-files
  4248.         103h    BYTE    NOP-command (90h)
  4249.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  4250.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  4251.                 each driver must have a unique name
  4252.     MDEBUG will pass every key and command to the command driver(s) before
  4253.       checking for a valid internal command
  4254. SeeAlso: AX=D000h,AX=D101h
  4255.  
  4256. Format of MDEBUG identification table:
  4257. Offset    Size    Description
  4258.  -2    WORD    entry offset
  4259.  00h    WORD    CS of MDEBUG
  4260.  02h    DWORD    old INT 08h vector
  4261.  06h    DWORD    old INT 09h vector
  4262.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  4263.  0Eh    BYTE    length of version string
  4264.  0Fh  N BYTEs    version string
  4265. --------G-2FD101-----------------------------
  4266. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  4267.     AX = D101h
  4268.     CX = command driver counter
  4269. Return: DL = FFh if successful
  4270.         CX incremented
  4271.          else error: all registers unchanged
  4272. Note:    this function must end with a  far call to the old INT 2F handler after
  4273.       changing the registers
  4274.     this function must be reentrant
  4275. --------G-2FD102-----------------------------
  4276. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  4277.     AX = D102h
  4278.     BL = first character of the interpreter command
  4279.     BH = last character of the interpreter command (or blank)
  4280.     DS:SI -> parameter for the interpreter command as ASCIZ string
  4281.     DS:DI -> MDEBUG data structure (see below)
  4282. Return: AL = FFh
  4283.     CF set on error
  4284.         AH = error number
  4285.         01h syntax error
  4286.         02h first shell of the command.com is activ
  4287.         03h esc pressed
  4288.         04h break pressed
  4289.         05h DOS is busy
  4290.         06h command ended
  4291.         07h division by zero
  4292.         08h invalid display driver
  4293.         09h invalid command driver
  4294.         0Ah error 8 and 9
  4295.         0Bh unknown error
  4296.         0Ch new error
  4297.             DS:SI -> ASCIZ error message (max 30 characters)
  4298.            else unknown error
  4299.     CF clear if successful
  4300.         AH = return code
  4301.         00h continue processing the command line
  4302.         01h leave MDEBUG popup session
  4303.         02h leave MDEBUG popup session and automatically popup again
  4304.             if the InDOS flag is zero
  4305.         03h not used (same as 00h)
  4306.         04h not used (same as 00h)
  4307.         05h put new command line into the input buffer,
  4308.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4309.         06h process new command line
  4310.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4311.            else unknown status, but continue processing commmand line
  4312. Note:    this function must end with a far call to the old INT 2F handler (with
  4313.       registers unchanged) if the driver does not support the interpreter
  4314.       command in BX.  Otherwise, the driver must not chain to the old
  4315.       INT 2F.
  4316.  
  4317. Format of MDEBUG data structure:
  4318. Offset    Size    Description
  4319.  00h    WORD    register SE
  4320.  02h    WORD    register OF
  4321.  04h    WORD    register FS
  4322.  06h    WORD    register FO
  4323.  08h    WORD    register AX
  4324.  0Ah    WORD    register BX
  4325.  0Ch    WORD    register CX
  4326.  0Eh    WORD    register DX
  4327.  10h    WORD    register SI
  4328.  12h    WORD    register DI
  4329.  14h    WORD    register DS
  4330.  16h    WORD    register ES
  4331.  18h    WORD    register BP
  4332.  1Ah    WORD    register SS
  4333.  1Ch    WORD    register SP
  4334.  1Eh    WORD    register FL (flags)
  4335.  20h    WORD    register R0
  4336.  22h    WORD    register R1
  4337.  24h    WORD    register R2
  4338.  26h    WORD    register R3
  4339.  28h    WORD    register R4
  4340.  2Ah    WORD    register R5
  4341.  2Ch    WORD    register R6
  4342.  2Eh    WORD    register R7
  4343.  30h    WORD    register R8
  4344.  32h    WORD    register CS, return-address
  4345.  34h    WORD    register IP, return-address
  4346.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  4347.         saved monitor address (v1.70)
  4348.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  4349.         (original register values at popup entry of MDEBUG)
  4350.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4351.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  4352.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4353.  6Ah    DWORD    address of the DOS-invars-table
  4354.  6Eh    DWORD    address of the InDOS flag
  4355.  72h    WORD    offset of the register which is used for the segment of the
  4356.         first monitor window
  4357.  74h    WORD    offset of the register which is used for the offset of the
  4358.         first monitor window
  4359.  76h    WORD    name of the register which is used for the segment of the
  4360.         first monitor segment
  4361.  78h    WORD    name of the register which is used for the offset of the first
  4362.         monitor window
  4363.  7Ah    WORD    pseudo register 1
  4364.  7Ch    WORD    pseudo register 2
  4365. --------G-2FD103-----------------------------
  4366. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  4367.     AX = D103h
  4368.     BX = key code (like result of an interrupt 16h call)
  4369.     CX = 0 -> the cursor is in the ASCII column of the monitor
  4370.     CX = 1 -> the cursor is in one of the hex fields of the monitor
  4371.     DS:SI -> MDEBUG data structure (see AX=D102h)
  4372.     ES:DI -> actual byte in the monitor
  4373. Return: AL = FFh
  4374.     AH = return code
  4375.         00h key processed, read next key
  4376.         01h leave MDEBUG popup session
  4377.         02h leave MDEBUG popup session and automatically popup again if DOS
  4378.         is not busy
  4379.         03h signal an error (beep)
  4380.         04h driver has redefined the key, proceed with the new key
  4381.         BX = new key code
  4382.         MDEBUG will not pass the new key to the command driver(s)
  4383.        else treat like code 00h
  4384. Note:    this function must end with a far call to the old INT 2F handler (with
  4385.       registers unchanged) if the driver does not support the key in BX.
  4386.       Otherwise, the driver must not chain to the old INT 2F.
  4387. SeeAlso: AX=D104h
  4388. --------G-2FD104-----------------------------
  4389. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  4390.     AX = D104h
  4391.     DS:SI -> MDEBUG data structure (see AX=D102h)
  4392. Return: AL = FFh
  4393.     AH = return code
  4394.         00h key processed, read next key
  4395.         01h leave MDEBUG popup session
  4396.         02h leave MDEBUG popup session and automactically popup again if
  4397.         DOS is not busy
  4398.         03h signal an error (beep)
  4399.         04h driver has redefined the key, proceed with the new key
  4400.         BX = new key code
  4401.         MDEBUG won't pass the new key to the command driver(s)
  4402.         05h put new command line into the input buffer
  4403.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4404.         06h process new command line
  4405.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4406.        else treat like code 00h
  4407. Note:    this function must end with a far call to the old INT 2F handler if the
  4408.       driver does not support the key in BX.  Otherwise, the driver must
  4409.       not chain to the old INT 2F.
  4410. SeeAlso: AX=D103h
  4411. --------G-2FD1-------------------------------
  4412. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4413.     AH = D1h
  4414.     AL = 05h-0Ah
  4415. Note:    these functions are reserved for future use
  4416. --------G-2FD110-----------------------------
  4417. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  4418.     AX = D110h
  4419. Return: DL = FFh
  4420.     ES:BX -> next program in the chain for INT 2F
  4421.     CX = code segment of this driver
  4422.     DI = offset of driver identification table (see below) (v1.60+)
  4423. Notes:    only called by the transient part of the driver
  4424.     must be reentrant and the driver must not chain this function to the
  4425.       old INT 2F
  4426.  
  4427. Format of the driver identification table:
  4428. Offset    Size    Description
  4429.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  4430.                          ^- Note: ASCII 129,German U-umlaut
  4431.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  4432.          each driver must have a unique name
  4433. --------G-2FD111-----------------------------
  4434. INT 2F - MDEBUG command driver - START DRIVER
  4435.     AX = D111h
  4436. Return: DL = FFh
  4437. Notes:    only called by the transient part of the driver to inform the resident
  4438.       part that it is installed
  4439.     the function must be reentrant and the driver mustn't chain this
  4440.       function to the old INT 2F
  4441. SeeAlso: AX=D101h,AX=D112h
  4442. --------G-2FD112-----------------------------
  4443. INT 2F - MDEBUG command driver - END DRIVER
  4444.     AX = D112h
  4445. Return: DL = FFh
  4446. Notes:    only called by the transient part of the driver to inform the resident
  4447.       part that it will be released after this function
  4448.     the function must be reentrant and the driver mustn't chain this
  4449.       function to the old INT 2F
  4450. SeeAlso: AX=D101h,AX=D111h
  4451. --------G-2FD1-------------------------------
  4452. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4453.     AH = D1h
  4454.     AL = 13h-7Fh
  4455. Note:    these functions are reserved for future use
  4456. --------G-2FD1-------------------------------
  4457. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  4458.     AH = D1h
  4459.     AL = 80h-FFh
  4460. Note:    these functions are reserved for user defined features (e.g.
  4461.       communication between the transient und resident parts of the driver)
  4462. --------U-2FD200-----------------------------
  4463. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  4464.     AX = D200h
  4465. Return: AL = FFh if installed??? (documented as AX = return value)
  4466. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  4467.       board by Advantec
  4468. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  4469. --------Q-2FD200BX5144-----------------------
  4470. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  4471.     AX = D200h
  4472.     BX = 5144h ("QD")
  4473.     CX = 4D45h ("ME")
  4474.     DX = 4D30h ("M0")
  4475. Return: AL = FFh installed
  4476.     if BX,CX,DX registers were as specified on entry:
  4477.         BX = 4D45h ("ME")
  4478.         CX = 4D44h ("MD")
  4479.         DX = 5652h ("VR")
  4480. Notes:    AH=D2h is the default multiplex number for the Quarterdeck RPCI
  4481.       (Resident Program Communication Interface), but it may use the first
  4482.       available multiplex number in the range D2h through FFh, then C0h
  4483.       through D1h
  4484.     the RPCI is supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  4485.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  4486.       Quarterdeck product, it just chains to the previous INT 2F handler
  4487. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  4488. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  4489. --------U-2FD201-----------------------------
  4490. INT 2F - PCL-838.EXE - UNINSTALL
  4491.     AX = D201h
  4492. Return: AX = return value
  4493. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  4494. --------m-2FD201BX4849-----------------------
  4495. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  4496.     AX = D201h
  4497.     BX = 4849h ("HI")
  4498.     CX = 4D45h ("ME")
  4499.     DX = 4D51h ("MQ")
  4500. Return: BX = 4F4Bh ("OK")
  4501.     ES:DI -> HIMEM entry point
  4502. Note:    AH=D2h is the default multiplex number, but any value in the range
  4503.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4504. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  4505. --------m-2FD201BX4849-----------------------
  4506. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  4507.     AX = D201h
  4508.     BX = 4849h ("HI")
  4509.     CX = 5241h ("RA")
  4510.     DX = 4D30h ("M0")
  4511. Return: BX = 4F4Bh ("OK")
  4512.     CX = segment of start of HIRAM chain
  4513.     DX = reserved block owner (QEMM/QRAM code segment)
  4514. Notes:    AH=D2h is the default multiplex number, but any value in the range
  4515.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4516.     the HIRAM memory chain has the same format as the regular DOS 4.0
  4517.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  4518.       have the block header program name field set to "UMB"; blocks whose
  4519.       "owner" field is set to the reserved segment returned in DX are
  4520.       locked-out regions such as video memory and ROMs.
  4521. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  4522. --------G-2FD201BX4D41-----------------------
  4523. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  4524.     AX = D201h
  4525.     BX = 4D41h ("MA")
  4526.     CX = 4E49h ("NI")
  4527.     DX = 4645h ("FE")
  4528. Return: BX = 5354h ("ST")
  4529. Note:    AH=D2h is the default multiplex number, but any value in the range
  4530.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4531. SeeAlso: AX=D200h
  4532. --------E-2FD201BX4D45-----------------------
  4533. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  4534.     AX = D201h
  4535.     BX = 4D45h ("ME")
  4536.     CX = 5155h ("QU")
  4537.     DX = 5044h ("PD")
  4538. Return: AL = FFh
  4539.     BX = 4F4Bh ("OK")
  4540. Notes:    AH=D2h is the default; use the Quarterdeck installation check described
  4541.       under AX=D200h
  4542.     called by QEMM 6.03
  4543.     performs a variety of actions before setting return registers
  4544. SeeAlso: AX=D200h
  4545. --------m-2FD201BX5145-----------------------
  4546. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  4547.     AX = D201h
  4548.     BX = 5145h ("QE")
  4549.     CX = 4D4Dh ("MM")
  4550.     DX = 3432h ("42")
  4551. Return: BX = 4F4Bh ("OK")
  4552.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  4553. Notes:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4554.       free AH value from D2h through FFh, then C0h through D1h
  4555.     this call is not available under QEMM v6.00 unless Windows3 support
  4556.       has been disabled with the NW3 switch to QEMM386.SYS
  4557. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  4558. --------V-2FD201BX5649-----------------------
  4559. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  4560.     AX = D201h
  4561.     BX = 5649h ("VI")
  4562.     CX = 4452h ("DR")
  4563.     DX = 414dh ("AM")
  4564. Return: BX = 4F4Bh ("OK")
  4565.     ES:DI -> VIDRAM entry point
  4566. Note:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4567.       free AH value from D2h through FFh, then C0h through D1h
  4568. SeeAlso: AX=D200h
  4569.  
  4570. Call VIDRAM entry point with:
  4571.     AH = 00h get status
  4572.         Return: AL = VIDRAM state (see below)
  4573.             BL = extra RAM status
  4574.                 00h VIDRAM does not use extra RAM
  4575.                 01h VIDRAM uses EMS as extra RAM
  4576.                 02h VIDRAM uses EGA as extra RAM
  4577.             BH = feature flags
  4578.                 bit 0: override enabled
  4579.                 bit 1: mapped memory detected in A000h-B000h range
  4580.                 bit 2: top of memory not at 640K
  4581.                 bit 3: MDA detected
  4582.                 bit 4: high RAM exists in video area
  4583.                 bit 5: mapped memory detected in video area
  4584.                 bits 6-7: reserved???
  4585.             CL = current monitor (01h = mono, 80h = color)
  4586.             SI = current top of memory (paragraph)
  4587.             DI = segment of start of HiRAM chain
  4588.     AH = 01h setup
  4589.         AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph)
  4590.         BL = extra RAM status (see above)
  4591.         BH = feature flags (see above)
  4592.         CL = monitor (01h = monochrome, 80h = color)
  4593.         SI = new top of memory (paragraph)
  4594.         DI = segment of start of HiRAM chain
  4595.     AH = 02h get end address of VIDRAM code
  4596.         Return: ES:DI -> VIDRAM partial map context (see below)
  4597. Return: CF set on error
  4598.     CF clear if successful
  4599.  
  4600. Format of partial map context (EMS 3.2):
  4601. Offset    Size    Description
  4602.  00h    BYTE    EMS version ID (32h)
  4603.  01h    WORD    EMM handle for this entry
  4604.  03h    BYTE    number of frames
  4605.  04h    BYTE    first page frame
  4606.  05h    WORD    offset from ES to previously saved map
  4607.  
  4608. Format of partial map context (EMS 4.0):
  4609. Offset    Size    Description
  4610.  00h    BYTE    EMS version ID (40h)
  4611.  01h    WORD    mappable segment count
  4612.  03h  N WORD    mappable segments
  4613.     WORD    offset to previously saved map???
  4614. --------U-2FD202-----------------------------
  4615. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  4616.     AX = D202h
  4617.     CX:BX -> parameter table
  4618. Return: AX = return value
  4619. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  4620. --------R-2FD300BX4562-----------------------
  4621. INT 2F U - TeleReplica - INSTALLATION CHECK
  4622.     AX = D300h
  4623.     BX = 4562h
  4624.     CX = 2745h
  4625.     DX = serial port I/O base address??? (03F8h for v3.9)
  4626. Return: SI = segment of resident code
  4627.     AX = 251Dh
  4628.     BX = DF21h
  4629.     CX = F321h
  4630.     DX = ???
  4631. --------R-2FD3CB-----------------------------
  4632. INT 2F U - LapLink Quick Connect v6 - API
  4633.     AX = D3CBh
  4634.     CX = function
  4635.         0002h get ???
  4636.         Return: BX:AX -> ???
  4637.             CL = ???
  4638.             CH = ???
  4639.             DX = ???
  4640.             DI = COM1 I/O port???
  4641.             SI = COM2 I/O port???
  4642.         0003h initialization???
  4643.         0004h ???
  4644.         0005h initialization???
  4645.         0006h reset/clear ???
  4646.         Return: AX = 0000h
  4647.             ES:DI -> next byte after ??? cleared by this call
  4648.         0007h initialization???
  4649.         0008h uninstall
  4650.         Return: BX = status
  4651.                 0000h successful
  4652.                 FFFFh incomplete, stub remains in memory
  4653. Return: CX = 534Bh (except function 0002h)
  4654. Index:    uninstall;LapLink Quick Connect
  4655. --------l-2FD44D-----------------------------
  4656. INT 2F - 4DOS.COM v2.1+ - API
  4657.     AX = D44Dh
  4658.     BH = function
  4659.         00h installation check
  4660.         Return: AX = 44DDh
  4661.             BL = major version number
  4662.             BH = minor version number
  4663.             CX = PSP segment address for current invocation
  4664.             DL = 4DOS shell number (0 for the first (root) shell,
  4665.                  updated each time a new copy is loaded)
  4666.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  4667.         Return: nothing
  4668.         (internal, v4.0) ???
  4669.         Return: AX = 44DDh
  4670.             ES:BX -> data area (see below)
  4671.         02h ???
  4672.         DX = ???
  4673.     ---v2.1-3.03 only---
  4674.         03h EXEC program
  4675.         CX:DX -> EXEC record
  4676.         FEh deallocate shell number (passed through to root shell)
  4677.         ???
  4678.         FFh allocate shell number (passed through to root shell)
  4679. Note:    bug in v3.00 will crash system if unrecognized value in BH
  4680. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  4681. Index:    installation check;4DOS|installation check;NDOS
  4682.  
  4683. Format of EXEC record:
  4684. Offset    Size    Description
  4685.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  4686.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  4687.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  4688.  
  4689. Format of 4DOS v4.0 data area:
  4690. Offset    Size    Description
  4691.  00h  2 BYTEs    ???
  4692.  06h    WORD    XMS handle for swapping
  4693.     ???
  4694. --------l-2FD44E-----------------------------
  4695. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  4696.     AX = D44Eh
  4697. ---4DOS v3.01+---
  4698.     BX = 0000h 4DOS is ready to display prompt
  4699.        = 0001h 4DOS has displayed the prompt, about to accept user input
  4700. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  4701. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  4702. SeeAlso: AX=D44Dh
  4703. --------K-2FD44FBX0000-----------------------
  4704. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  4705.     AX = D44Fh
  4706.     BX = 0000h
  4707. Return: AX = 44DDh if installed
  4708. SeeAlso: AX=D44Fh/BX=0001h
  4709. --------K-2FD44FBX0001-----------------------
  4710. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  4711.     AX = D44Fh
  4712.     BX = 0001h
  4713.     CX = number of keystrokes (01h-FFh)
  4714.     DS:DX -> keystroke list (one word per keystroke)
  4715. Return: AX = status
  4716.         0000h successful
  4717.         nonzero failed
  4718.     BX,CX,DX destroyed
  4719. Notes:    the keystrokes are the exact values to return from subsequent calls to
  4720.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  4721.         0000h causes subfunctions 01h and 11h to indicate an empty
  4722.             keyboard buffer
  4723.         FFFFh is followed by a word indicating the number of clock
  4724.             ticks to delay before the next faked keystroke
  4725.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  4726.       invocation, and does not range-check CX; it will overwrite memory
  4727.       following the resident portion if CX is greater than 100h.
  4728. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  4729. --------G-2FD600-----------------------------
  4730. INT 2F - HEART.COM - INSTALLATION CHECK
  4731.     AX = D600h
  4732. Return: AX = 0303h (two hearts) if installed
  4733.         ES:DI -> buffer (see below)
  4734. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  4735. Notes:    Once the host program has identified the address of the data area, it
  4736.       can change this to indicate safe/critical, alternate colours, etc.
  4737.     The entries for the color table are in char/attrib form.  Every two
  4738.       entries form a pair which is alternated between 68 times a minute.
  4739.       The first half of the table is for color videos, the second mono.
  4740.       Within each half, the first half is for the safe chars, and the
  4741.       second for the critical chars.
  4742.  
  4743. Format of buffer:
  4744. Offset    Size    Description
  4745.  00h  8 WORDs    table of colors/attributes (see notes above)
  4746.  10h    BYTE    flags
  4747.         bit 0: program is in critical section, so flash double
  4748.             exclamation mark
  4749.         bit 1: program is in safe code, so flash the heart character
  4750.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  4751.         of second line)
  4752. --------T-2FD600-----------------------------
  4753. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  4754.     AX = D600h
  4755. Return: AL = D6h if installed
  4756. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  4757.       is a programmer's text editor by Greenview Data.
  4758. SeeAlso: AX=D601h,AX=D602h
  4759. --------T-2FD601-----------------------------
  4760. INT 2F U - VEDIT VSWAP - ???
  4761.     AX = D601h
  4762.     BL = subfunction number???
  4763. Return: BL = return code ???
  4764.     ES = resident portion's data??? segment
  4765.     DX = resident portion's code segment
  4766. SeeAlso: AX=D600h"VSWAP"
  4767. --------T-2FD602-----------------------------
  4768. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  4769.     AX = D602h
  4770.     other registers set as for INT 21/AX=4B00h
  4771. Return: CF set on error
  4772.         AL = error code
  4773.         82h = failure due to ???
  4774.     CF clear on success
  4775. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  4776. --------N-2FD701BX0000-----------------------
  4777. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  4778.     AX = D701h
  4779.     BX = 0000h
  4780. Return: AX = 0000h installed
  4781.         BX = interrupt number (60h to 66h)
  4782.        nonzero not present
  4783. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  4784.       necessary to examine the four bytes preceding the handlers for
  4785.       INT 60 through INT 66 for the string "BANV"
  4786. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  4787. --------N-2FD702-----------------------------
  4788. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  4789.     AX = D702h
  4790.     BX = function
  4791.     ???
  4792. Return: ???
  4793. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  4794. --------N-2FD703-----------------------------
  4795. INT 2F U - Banyan VINES v4+ - MAIL interface
  4796.     AX = D703h
  4797.     BX = function
  4798.     ???
  4799. Return: ???
  4800. SeeAlso: AX=D702h,AX=D704h
  4801. --------N-2FD704-----------------------------
  4802. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  4803.     AX = D704h
  4804.     BX = function
  4805.     ???
  4806. Return: ???
  4807. SeeAlso: AX=D703h,INT 61/AX=0007h"Banyan"
  4808. --------N-2FD800-----------------------------
  4809. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  4810.     AX = D800h
  4811. Return: AL = FFh if installed
  4812.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4813.         BX = data segment of resident copy
  4814.         ES:DI -> private API entry point (see below)
  4815.         SI = segment of resident code
  4816. SeeAlso: AX=7A00h,AX=D880h
  4817.  
  4818. Call CLIENT API entry point with:
  4819.     BX = function
  4820.         0000h get ???
  4821.         Return: DX = CLIENT version??? (0101h for v1.1)
  4822.             ES:BX -> ??? data
  4823.         0001h ???
  4824.         0002h ???
  4825.         0003h ???
  4826.         0004h ???
  4827.         0005h ???
  4828.         DL = ???
  4829.         ???
  4830.         Return: ???
  4831.         0006h get module name???
  4832.         ES:DI -> 16-byte buffer
  4833.         Return: CX = ???
  4834.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  4835.         0007h ???
  4836.         DX:CX = ???
  4837.         ???
  4838.         Return: ???
  4839.         0008h ???
  4840.         0009h ???
  4841.         DL = ???
  4842.         ES:DI -> 16-byte buffer for ???
  4843.         Return: CF clear if successful
  4844.                 AX = 0000h
  4845.                 CX = 0000h
  4846.                 SI,DI destroyed
  4847.             CF set on error
  4848.                 AX = error code 4903h
  4849.         000Ah ???
  4850.         AH = subfunction
  4851.             00h get ???
  4852.             01h clear/set ??? flag
  4853.             AL = new state (00h cleared, 01h set)
  4854.             02h set ???
  4855.             DX = new value of ???
  4856.         Return: DX = old value of ???
  4857.         000Bh ???
  4858.         AX = ???
  4859.         ???
  4860.         Return: ???
  4861.         000Ch ???
  4862.         AX = ???
  4863.         ???
  4864.         Return: ???
  4865.         000Dh ???
  4866.         AX = ???
  4867.         ???
  4868.         Return: ???
  4869.         000Eh get original INT 17
  4870.         Return: CF clear
  4871.             ES:BX -> original INT 17
  4872.         000Fh ???
  4873.         0010h ???
  4874.         AX = ???
  4875.         ???
  4876.         Return: ???
  4877.         0011h get ???
  4878.         Return: CF clear
  4879.             DL = ???
  4880.         0012h get ???
  4881.         AL = index of ???
  4882.         ES:DI -> 10-byte buffer for ???
  4883.         Return: CF clear if successful
  4884.                 ES:DI buffer filled
  4885.                 AX,CX destroyed
  4886.             CF set on error
  4887.                 AX = error code (4907h if AL out of range)
  4888.         0013h get ???
  4889.         Return: CF clear
  4890.             DH = ???
  4891.             DL = ???
  4892.         0014h ???
  4893.         DL = ???
  4894.         ???
  4895.         Return: CF clear if successful
  4896.                 ???
  4897.             CF set on error
  4898.                 AX = error code 8056h
  4899.         0015h ???
  4900.         DX = ???
  4901.         Return: ES:DI -> ???
  4902.         other
  4903.         Return: CF set
  4904.             AX = 0001h (invalid function)
  4905. --------N-2FD856-----------------------------
  4906. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  4907.     AX = D856h
  4908. Return: AX = ??? (0001h for v1.1)
  4909.     BX = ??? (0004h for v1.1)
  4910.     CX = ??? (0F20h for v1.1)
  4911.     DS = segment of resident code
  4912.     ES = data segment of resident copy
  4913. --------N-2FD880-----------------------------
  4914. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  4915.     AX = D880h
  4916. Return: AL = FFh if installed
  4917.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4918.         BX = data segment of resident copy
  4919.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  4920.         ES:DI -> private API entry point (see below)
  4921.         SI = ??? (offset of configuration info?)
  4922. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  4923.  
  4924. Call SERVER API entry point with:
  4925.     BX = function
  4926.         0000h ???
  4927.         ???
  4928.         Return: ???
  4929.         Note: closes open files by calling INT 21/AH=3Eh
  4930.         0001h get connection information
  4931.         DX = connection number (0001h-max connections)
  4932.         ES:DI -> 28-byte buffer for connection information
  4933.         Return: CF clear if successful
  4934.                 ES:DI buffer filled
  4935.             CF set on error
  4936.                 AX = FFFFh
  4937.         other
  4938.         Return: CF set
  4939.             AX = 0001h (invalid function)
  4940. --------d-2FD8C0-----------------------------
  4941. INT 2F U - Novell NetWare Lite v1.1 - NLCACHE - INSTALLATION CHECK
  4942.     AX = D8C0h
  4943. Return: AL = FFh if installed
  4944.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  4945.         DH = major version??? (01h for v1.1)
  4946.         DL = minor version??? (01h for v1.1)
  4947.         ES:DI -> private API entry point (see below)
  4948. Program: NLCACHE is a disk cache included with NetWare Lite
  4949. SeeAlso: AX=D800h,AX=D880h
  4950.  
  4951. Call NLCACHE API entry point with:
  4952.     BX = function
  4953.         0000h ???
  4954.         ???
  4955.         Return: CF clear if successful
  4956.                 AX = 0000h
  4957.                 ???
  4958.             CF set on error
  4959.                 AX = error code
  4960.         other
  4961.         Return: CF set
  4962.             AX = 0001h (invalid function)
  4963. --------F-2FDA00-----------------------------
  4964. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  4965.     AX = DA00h
  4966. Return: AH = enabled state (00h = enabled, 01h = disabled)
  4967.     AL = 5Ah installed
  4968. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  4969.       fax modems.
  4970. Note:    This function, and the other DAxxh functions, may apply only to version
  4971.       1 of the software; see AX=DB00h for the version 2 installation check
  4972. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  4973. --------F-2FDA01-----------------------------
  4974. INT 2F - ZyXEL ZFAX - UNINSTALL
  4975.     AX = DA01h
  4976. Return: AL = 00h Success
  4977.          01h Failure
  4978. SeeAlso: AX=DA00h,AX=DB01h
  4979. --------F-2FDA02-----------------------------
  4980. INT 2F - ZyXEL ZFAX - DISABLE
  4981.     AX = DA02h
  4982. Return: AL = 00h
  4983. SeeAlso: AX=DA03h,AX=DB02h
  4984. --------F-2FDA03-----------------------------
  4985. INT 2F - ZyXEL ZFAX - ENABLE
  4986.     AX = DA03h
  4987. Return: AL = 00h
  4988. SeeAlso: AX=DA02h,AX=DB03h
  4989. --------G-2FDA55-----------------------------
  4990. INT 2F U - TRAP.COM - INSTALLATION CHECK
  4991.     AX = DA55h
  4992.     DL = interrupt number
  4993.     DH = ???
  4994. Return: if installed
  4995.         AH = interrupt number
  4996.         AL = ???
  4997.         ES:BX -> ???
  4998. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  4999. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  5000.       the interrupt number is part of the installation check
  5001. --------N-2FDAB2-----------------------------
  5002. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  5003.     AX = DAB2h
  5004. Return: AX = 00FFh if installed
  5005.         BX:CX -> MIB table
  5006. Program: BWSNMP is part of the BW-NFS package
  5007. SeeAlso: INT 62"BW-TCP"
  5008. --------F-2FDB00-----------------------------
  5009. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  5010.     AX = DB00h
  5011. Return:    AL = 5Bh if installed (v2.x)
  5012.         ES:BX -> ???
  5013.     AX = 00DBh if installed (v3)
  5014.         ES:BX -> ZFAX configuration table (see below)
  5015. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5016.       fax modems.
  5017. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  5018.  
  5019. Format of ZFAX Configuration Table:
  5020. Offset    Size    Description
  5021.  00h    WORD    version number (0300h for v3.0)
  5022.  02h    BYTE    reserved
  5023.  03h 70 BYTEs    ZFAX working path
  5024.  49h 128 BYTEs    path to external editor
  5025.  C9h 128 BYTEs    path to external terminal emulator
  5026. 149h 128 BYTEs    path to Ring Shell
  5027. 1C9h 128 BYTEs    path to DOS Shell
  5028. 249h 128 BYTEs    path to Data Shell
  5029. 2C9h 70 BYTEs    path to Chinese font
  5030. 30Fh    BYTE    printer type (see below)
  5031. 310h    BYTE    printer port (00h = LPT1, etc.)
  5032. 311h    BYTE    type of graphics adapter
  5033.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  5034. 312h    BYTE    display type
  5035.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  5036. 313h    BYTE    scan code for ZFAX hotkey
  5037. 314h    BYTE    shift mask for ZFAX hotkey
  5038. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  5039. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  5040. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  5041. 318h    BYTE    normal ring answer type (see below)
  5042. 319h    BYTE    Ring 1 answer type (see below)
  5043. 31Ah    BYTE    Ring 2 answer type (see below)
  5044. 31Bh    BYTE    Ring 3 answer type (see below)
  5045. 31Ch    BYTE    COM port for modem
  5046. 31Dh    BYTE    speaker volume (00h-07h)
  5047. 31Eh    BYTE    modem dial timer, seconds
  5048. 31Fh    WORD    user-defined COM port I/O address
  5049. 321h    BYTE    user-defined COM port IRQ number
  5050. 322h 81 BYTEs    dial prefix string
  5051. 373h 79 BYTEs    dial postfix string
  5052. 3C2h    BYTE    ring count until automatic answer
  5053. 3C3h    BYTE    retry count on busy signal
  5054. 3C4h    BYTE    redial delay in seconds
  5055. 3C5h    WORD    system password
  5056. 3C7h    BYTE    reserved
  5057. 3C8h    BYTE    voice file compression format
  5058.         00h CELP at 9600bps
  5059.         01h two-bit ADPCM at 19200bps
  5060.         03h three-bit ADPCM at 28800bps
  5061. 3C9h    BYTE    voice system: DTMF 0 action (see below)
  5062. 3CAh    BYTE    voice system: DTMF 1 action
  5063. 3CBh    BYTE    voice system: DTMF 2 action
  5064. 3CCh    BYTE    voice system: DTMF 3 action
  5065. 3CDh    BYTE    voice system: DTMF 4 action
  5066. 3CEh    BYTE    voice system: DTMF 5 action
  5067. 3CFh    BYTE    voice system: DTMF 6 action
  5068. 3D0h    BYTE    voice system: DTMF 7 action
  5069. 3D1h    BYTE    voice system: DTMF 8 action
  5070. 3D2h    BYTE    voice system: DTMF 9 action
  5071. 3D3h    WORD    reserved
  5072. 3D5h 25 BYTEs    local FAX ID to display on page header
  5073. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  5074. 402h    BYTE    FAX page size
  5075.         00h A4 (210x297mm)
  5076.         01h B4 (250x353mm)
  5077.         02h A3 (297x420mm)
  5078. 403h    BYTE    FAX resolution
  5079.         00h normal (3.85 pixels/mm)
  5080.         01h high (7.7 pixels/mm)
  5081. 404h    BYTE    FAX coding scheme
  5082.         00h 1-D, modified Huffman coding
  5083.         01h 2-D, modified READ coding
  5084. 405h    BYTE    left margin for text in millimeters
  5085. 406h    BYTE    vertical insertion for text in mm (0-20)
  5086. 407h    BYTE    horizontal insertion in mm (0-20)
  5087. 408h    BYTE    maximum text lines per page
  5088. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  5089. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  5090. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  5091. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  5092. 40Dh 81 BYTEs    cover page logo filename
  5093. 45Eh 65 BYTEs    cover page sender name
  5094. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  5095. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  5096. 4A1h    BYTE    print capture printer port
  5097. 4A2h    BYTE    print capture timer in seconds
  5098. 4A3h    BYTE    scan code for print capture hotkey
  5099. 4A4h    BYTE    shift mask for print capture hotkey
  5100. 4A5h    BYTE    DataShell type
  5101.         00h internal Zmodem, 01h Data Shell, 02h disable
  5102. 4A6h    BYTE    video I/O type
  5103.         00h auto-detect, 01h use BIOS, 02h direct writes
  5104. 4A7h    BYTE    call transfer digits
  5105. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  5106.  
  5107. Values for printer type:
  5108.  00h    EPSON FX (9 pins)
  5109.  01h    EPSON LQ (24 pins)
  5110.  02h    HP Laser Jet II, letter size
  5111.  03h    HP Laser Jet II, legal size
  5112.  04h    HP Laser Jet II, A4 size
  5113.  05h    HP Laser Jet III, letter size
  5114.  06h    HP Laser Jet III, legal size
  5115.  07h    HP Laser Jet III, A4 size
  5116.  
  5117. Values for Ring Answer Type:
  5118.  00h    voice system
  5119.  01h    FAX only
  5120.  02h    Data Shell
  5121.  03h    Ring Shell
  5122.  04h    DOS Shell
  5123.  05h    ignore
  5124.  
  5125. Values for DTMF action:
  5126.  00h    none
  5127.  01h    page operator
  5128.  02h    FaxBack
  5129.  03h    announcement
  5130.  04h    call transfer
  5131.  05h    receive FAX
  5132.  06h    receive data
  5133.  07h    voice mailbox
  5134.  08h    DOS Shell Out
  5135.  09h    Data Shell Out
  5136. --------F-2FDB01-----------------------------
  5137. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  5138.     AX = DB01h
  5139. Return: AX = status
  5140.         0000h successful
  5141.         0001h ZFAX is busy
  5142.         0002h another program resident above ZFAX
  5143. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  5144.       not been hooked by other TSRs and releases the TSR's memory
  5145.     ZFAX v2.x crashes the contributor's machine when this function is
  5146.       called
  5147. SeeAlso: AX=DA01h,AX=DB00h
  5148. --------F-2FDB02-----------------------------
  5149. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  5150.     AX = DB02h
  5151. Return: AL = 00h
  5152. SeeAlso: AX=DA02h,AX=DB00h,AX=DB03h
  5153. --------F-2FDB03-----------------------------
  5154. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  5155.     AX = DB03h
  5156. Return: AL = 00h
  5157. SeeAlso: AX=DA03h,AX=DB00h,AX=DB02h
  5158. --------F-2FDB10-----------------------------
  5159. INT 2F - ZyXEL ZFAX v3 - EXECUTE ZFAX MAIN MENU
  5160.     AX = DB10h
  5161. --------F-2FDB11-----------------------------
  5162. INT 2F - ZyXEL ZFAX v3 - SEND FAX
  5163.     AX = DB11h
  5164.     DS:SI -> filename including path
  5165.     DS:BX -> remote FAX number
  5166. Return:    AX = status (see below)
  5167. SeeAlso: AX=DB12h,AX=DB13h,AX=DB14h,AX=DB20h,AX=DB21h
  5168.  
  5169. Values for ZFAX status:
  5170.  00h    OK
  5171.  01h    invalid DOS function
  5172.  02h    file not found
  5173.  03h    path not found
  5174.  04h    no file handle available
  5175.  05h    access denied by DOS
  5176.  06h    invalid handle
  5177.  07h    disk full
  5178.  10h    printer error
  5179.  11h    no graphics font
  5180.  12h    no ZFAX font
  5181.  20h    DCD dropped while sending
  5182.  21h    not ZyXEL modem
  5183.  22h    busy
  5184.  23h    no response from COM port
  5185.  24h    no carrier
  5186.  25h    no dial tone
  5187.  26h    no answer
  5188.  27h    no response
  5189.  28h    failed to send FAX
  5190.  30h    user aborted
  5191.  40h    critical error on disk
  5192.  50h    parameter error
  5193. --------F-2FDB12-----------------------------
  5194. INT 2F - ZyXEL ZFAX v3 - PRINT FAX
  5195.     AX = DB12h
  5196.     DS:SI -> filename, including path
  5197. Return: AX = status
  5198. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  5199. --------F-2FDB13-----------------------------
  5200. INT 2F - ZyXEL ZFAX v3 - CONVERT FAX
  5201.     AX = DB13h
  5202.     DS:SI -> source filename, including path
  5203.     DS:BX -> destination filename, including path
  5204.     CX = destination file format
  5205.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  5206. Return: AX = status
  5207. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  5208. --------F-2FDB14-----------------------------
  5209. INT 2F - ZyXEL ZFAX v3 - VIEW FAX
  5210.     AX = DB14h
  5211.     DS:SI -> source filename, including path
  5212. Return: AX = status
  5213. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  5214. --------F-2FDB20-----------------------------
  5215. INT 2F - ZyXEL ZFAX v3 - POLL FAX
  5216.     AX = DB20h
  5217.     DS:SI -> remote FAX number
  5218. Return: AX = status
  5219. SeeAlso: AX=DB11h,AX=DB21h
  5220. --------F-2FDB21-----------------------------
  5221. INT 2F - ZyXEL ZFAX v3 - SEND VOICE
  5222.     AX = DB21h
  5223.     DS:SI -> filename including path
  5224.     DS:BX -> remote phone number
  5225. Return:    AX = status
  5226. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  5227. --------F-2FDB22-----------------------------
  5228. INT 2F - ZyXEL ZFAX v3 - CONVERT VOICE FILE
  5229.     AX = DB22h
  5230.     DS:SI -> source filename, including path
  5231.     DS:BX -> destination filename, including path
  5232.     CX = destination format
  5233.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  5234. Return:    AX = status
  5235. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  5236. --------F-2FDB23-----------------------------
  5237. INT 2F - ZyXEL ZFAX v3 - RECORD VOICE FILE
  5238.     AX = DB23h
  5239.     DS:SI -> destination filename, including path
  5240.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  5241.     DX = voice file format
  5242.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  5243. Return: AX = status
  5244. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5245. --------F-2FDB24-----------------------------
  5246. INT 2F - ZyXEL ZFAX v3 - PLAY VOICE FILE
  5247.     AX = DB24h
  5248.     DS:SI -> name of voice file, including path
  5249.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  5250. Return: AX = status
  5251. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5252. --------F-2FDB25-----------------------------
  5253. INT 2F - ZyXEL ZFAX v3 - ANSWER MODEM WITH VOICE SYSTEM
  5254.     AX = DB25h
  5255. Return: AX = status
  5256. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  5257. --------F-2FDB26-----------------------------
  5258. INT 2F - ZyXEL ZFAX v3 - DIAL PHONE
  5259.     AX = DB26h
  5260.     DS:SI -> remote phone number
  5261. Return: AX = status
  5262. SeeAlso: AX=DB25h
  5263. --------F-2FDB27-----------------------------
  5264. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  5265.     AX = DB27h
  5266. Return: AX = status
  5267. SeeAlso: AX=DB25h,AX=DB28h
  5268. --------F-2FDB28-----------------------------
  5269. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  5270.     AX = DB28h
  5271. Return: AX = status
  5272. SeeAlso: AX=DB25h,AX=DB27h,AX=DB31h
  5273. --------F-2FDB31-----------------------------
  5274. INT 2F - ZyXEL ZFAX v3 - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  5275.     AX = DB31h
  5276.     DS:SI -> source file name, including path
  5277.     DS:BX -> remote data number
  5278. Return: AX = status
  5279. SeeAlso: AX=DB00h,AX=DB28h
  5280. --------F-2FDB40-----------------------------
  5281. INT 2F - ZyXEL ZFAX v3 - INTERNAL TERMINAL
  5282.     AX = DB40h
  5283. Return: AX = status
  5284. SeeAlso: AX=DB00h
  5285. --------K-2FDC00-----------------------------
  5286. INT 2F - GOLD.COM - INSTALLATION CHECK
  5287.     AX = DC00h
  5288. Return: AL = 00h not installed
  5289.        = FFh installed
  5290. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  5291.       for F1; the purpose is to improve Kermit's VTxxx emulation
  5292. --------K-2FDC01-----------------------------
  5293. INT 2F - GOLD.COM - GET STATE
  5294.     AX = DC01h
  5295. Return: AL = status
  5296.         00h off
  5297.         01h on
  5298. SeeAlso: AX=DC00h,AX=DC02h
  5299. --------K-2FDC02-----------------------------
  5300. INT 2F - GOLD.COM - SET STATE
  5301.     AX = DC02h
  5302.     DL = new state
  5303.         00h off
  5304.         01h on
  5305. Return: AL = 00h (OK)
  5306. SeeAlso: AX=DC01h
  5307. --------t-2FDD-------------------------------
  5308. INT 2F - CappaCom programs - API
  5309.     AH = DDh
  5310.     AL = 00h general installation check
  5311.         Return: AL = FFh if any CappaCom programs are resident
  5312.     AL = FEh get info
  5313.         Return: ES:BX -> TSR info list (see below)
  5314.     AL = program identifier
  5315.         BH = function
  5316.         FDh get version
  5317.             Return: BX = version
  5318.         FFh installation check
  5319.             Return: AL = FFh if installed
  5320.                 BX = version
  5321.                 ES = segment of resident code
  5322.         others vary by program
  5323. Return: AL = status
  5324.         bit 7 set on error
  5325.         AL = 81h unknown function
  5326. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  5327.       conflict
  5328. Index:    installation check;SoftCom programs
  5329. Index:    installation check;CappaCom programs
  5330.  
  5331. Format of TSR info list:
  5332. Offset    Size    Description
  5333.  00h  9 BYTEs    blank-padded ASCIZ program name
  5334.  09h    BYTE    program ID
  5335.  0Ah    WORD    program's PSP segment
  5336.  0Ch    WORD    program version (major in high byte)
  5337.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  5338.  12h    BYTE    number of interrupts hooked
  5339.  13h  5 BYTEs    interrupt numbers hooked by program
  5340.  18h  8 BYTEs    reserved
  5341. ----------2FDD-------------------------------
  5342. INT 2F - MIXFIX.EXE - API
  5343.     AH = DDh
  5344.     AL = function
  5345.         00h installation check
  5346.         Return: AX = 00DDh if installed
  5347.                 BX = version (BH = major, BL = minor)
  5348.         41h/61h get From: address
  5349.         Return: AX = 0001h
  5350.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  5351.         49h/69h get To: address
  5352.         Return: AX = 0001h
  5353.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  5354.         4Ah/6Ah get subject of mail
  5355.         Return: AX = 0001h
  5356.             ES:BX -> ASCIZ subject of handled mail
  5357.         4Dh/6Dh get mail name
  5358.         Return: AX = 0001h
  5359.             ES:BX -> ASCIZ full name of current mail file
  5360.         4Eh/6Eh get From: field
  5361.         Return: AX = 0001h
  5362.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  5363. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  5364.       other programs for mail handling.  The called programs may use the
  5365.       services described here to retrieve information about the mail being
  5366.       handled.
  5367. Index: installation check;MIXFIX.EXE
  5368. --------d-2FDD--BX7844-----------------------
  5369. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  5370.     AH = DDh
  5371.     BX = 7844h ('xD')
  5372.     CX = 4953h ('IS')
  5373.     DX = 4B3Fh ('K?')
  5374.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  5375.     ES:DI -> 25-byte data buffer (see below)
  5376. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  5377.        BX = 87BBh
  5378.        DX = B4C0h
  5379.        ES:DI buffer filled
  5380.     CX,CF destroyed
  5381. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  5382.  
  5383. Format of data buffer:
  5384. Offset    Size    Description
  5385.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  5386.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  5387.  05h    BYTE    flag: 01h if write protected, 00h if not
  5388.  06h    BYTE    flag: 01h if root directory full, 00h if not
  5389.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  5390.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  5391.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  5392.  0Ah  2 BYTEs    reserved
  5393.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  5394.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  5395.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  5396.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  5397.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  5398.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  5399.  12h    BYTE    flag: 01h terse display, 00h verbose display
  5400.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  5401.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  5402.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  5403.  16h    WORD    count of open files in RAM disk
  5404.  18h    BYTE    unused
  5405. --------Q-2FDE00BX4456-----------------------
  5406. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  5407.     AX = DE00h
  5408.     BX = 4456h ("DV")
  5409.     CX = 5844h ("XD")
  5410.     DX = 4931h ("I1")
  5411. Return: AL = FFh if installed (even if other registers do not match)
  5412.     if BX,CX, and DX were as specified on entry,
  5413.         BX = 4845h ("HE")
  5414.         CX = 5245h ("RE")
  5415.         DX = 4456h ("DV")
  5416. Notes:    AH=DEh is the default XDI multiplex number, but may range from C0h-FFh
  5417.     programs should check for XDI starting at DEh to FFh, then C0h to DDh
  5418.     the XDI handler should not issue any DOS or BIOS calls, nor should it
  5419.       issue DESQview API calls other than those allowed from hardware ints
  5420. SeeAlso: AX=DE02h,INT 15/AX=5400h
  5421. --------Q-2FDE01-----------------------------
  5422. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  5423.     AX = DE01h
  5424.     BX = driver ID
  5425.     other registers as needed by driver
  5426. Notes:    XDI drivers should pass this call through to previous handler if ID
  5427.       does not match
  5428.     DESQview never calls this function
  5429. --------Q-2FDE01BX4450-----------------------
  5430. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  5431.     AX = DE01h
  5432.     BX = 4450h ("DP")
  5433.     CX = 4D49h ("MI")
  5434.     DX = 3039h ("09")
  5435. Return: AL = FFh if installed
  5436.         BX = 4D42h ("MB")
  5437.         CX = 4921h ("I!")
  5438.         DX = 8F4Fh
  5439.         ES:DI -> filename of DPMI host overlay
  5440. Note:    the installation check consists of testing for the existence of the
  5441.       character device QDPMI$$$
  5442. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  5443. Index:    installation check;QDPMI
  5444. --------U-2FDE01BX5242-----------------------
  5445. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  5446.     AX = DE01h
  5447.     BX = 5242h ("RB")
  5448.     CX:DX = program identifier
  5449.         656F7000h ("eop",0) for DVeop
  5450. Return: AX = 5242h ("RB") if installed
  5451.         ES:BX -> data or entry point
  5452.         CX = version number (CH = major, CL = minor)
  5453.  
  5454. Call DVeop entry point with:
  5455.     ES:DI -> callback address or 0000h:0000h to remove callback
  5456. Return: AX = status
  5457.         0000h failed (callback table full or attempted to remove non-
  5458.             existent callback)
  5459.         0001h successful
  5460.         ES:DI -> chaining address
  5461.     BX,CX,DX destroyed
  5462. Notes:    the callback function is called with a simulated interrupt when the
  5463.       DESQview window containing it is closed; it should perform all
  5464.       necessary cleanup and then perform a FAR jump to the chaining address
  5465.       or an IRET if the chaining address is 0000h:0000h
  5466.     if the program wishes to remove itself before the window is closed, it
  5467.       should call the DVeop entry point with the previously returned
  5468.       chaining address and ignore the returned chaining address.
  5469. --------U-2FDE01BX7474-----------------------
  5470. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  5471.     AX = DE01h
  5472.     BX = 7474h
  5473.     CL = function
  5474.         00h installation check
  5475.         Return: AL = FFh
  5476.         01h get process handle
  5477.         DX = keys on Open Window menu (DL = first, DH = second)
  5478.         Return: AX = process handle or 0000h if not running
  5479.         02h (v1.3+) set TMAN handle
  5480.         DX = TMAN process handle
  5481.         03h (v1.3+) set open keys to ignore on next CL=01h call
  5482.         DX = keys on Open Window menu (DL = first, DH = second)
  5483. Return: BX = 4F4Bh ("OK")
  5484.     DL destroyed
  5485. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  5486.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  5487. Index:    installation check;DVTXDI
  5488. --------U-2FDE01BX7575-----------------------
  5489. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  5490.     AX = DE01h
  5491.     BX = 7575h
  5492.     CX = function
  5493.         0000h installation check
  5494.         Return: AX = 00FFh if installed
  5495.         0001h turn on notification (currently unused)
  5496.         Return: AX = 0001h
  5497.         0002h turn off notification (currently unused)
  5498.         Return: AX = 0001h
  5499.         0003h get process information
  5500.         Return: AX = status
  5501.                 0000h failed
  5502.                 0001h successful
  5503.                 BX = last instantaneous time slice
  5504.                     in 1/100s (v1.10)
  5505.                     in 1/18s (v1.11+)
  5506.                 CX = number of processes
  5507.                 DX = number of "(starting)" records (v2.00+)
  5508.                 SI = number of records in process info array
  5509.                      (v2.00+) (always 15 for v1.x)
  5510.                 ES:DI -> process info array (see below)
  5511.         0004h get version
  5512.         Return: AH = major version
  5513.             AL = minor version
  5514.         0005h (v1.10+) get time since DESQview started
  5515.         Return: DX:AX = 1/100s since DV start (v1.10)
  5516.             DX:AX = 1/18s since DV start (v1.11+)
  5517.         0006h (v1.10+) get number of task switches
  5518.         Return: DX:AX = total task switches
  5519.             CX = task switches in last instantaneous interval
  5520. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  5521.       Daniel J. Bodoh
  5522.     for v1.00, function 0003h allocates common memory, which the caller
  5523.       must deallocate after reading the process information; only the
  5524.       currently used records are placed in the buffer
  5525.     for v1.10+, function 0003h merely returns a pointer to the internal
  5526.       array of process information; the caller should make a copy of the
  5527.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  5528.       those records with bit 7 of the first byte set are valid.
  5529. Index:    installation check;DVSIXDI
  5530.  
  5531. Format of information for one process (v1.00):
  5532. Offset    Size    Description
  5533.  00h    BYTE    flags
  5534.         bit 7: process slot is valid
  5535.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  5536.         Open Windows menu, else undefined
  5537.  03h    WORD    Switch Windows window number
  5538.  05h    WORD    segment of process handle
  5539.  07h    WORD    number of tasks owned by process
  5540.  09h    WORD    mapping context of process (see INT 15/AX=1016h)
  5541.  0Bh    DWORD    hook for other programs
  5542.  
  5543. Format of information for one process (v1.10-v2.00):
  5544. Offset    Size    Description
  5545.  00h    BYTE    flags
  5546.         bit 7: valid record
  5547.         bit 6: (v2.00+) record is allocated; if bit 7 clear, process
  5548.             is "(starting)" and only offsets 01h and 09h are valid
  5549.         bit 5: (v2.00+) this app currently owns the CPU
  5550.         bit 4: reserved (0)
  5551.         bit 3: DESQview system task
  5552.         bit 2: reserved (0)
  5553.         bit 1: task has keyboard (currently unused)
  5554.         bit 0: task swapped out (currently unused)
  5555.  01h    WORD    Open Window keys
  5556.  03h    WORD    Switch Windows number
  5557.  05h    WORD    segment of process handle
  5558.  07h    WORD    number of tasks for process
  5559.  09h    WORD    process mapping context
  5560.  0Bh    DWORD    time process started (relative to start of DESQview)
  5561.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  5562.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  5563.  17h    DWORD    total CPU time since process started
  5564.  1Bh    DWORD    CPU time at start of current instantaneous interval
  5565.  1Fh    DWORD    CPU time in current instantaneous interval
  5566.  23h    DWORD    hook for other programs
  5567. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  5568. --------Q-2FDE01BXFFFE-----------------------
  5569. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  5570.     AX = DE01h
  5571.     BX = FFFEh
  5572.     CX = 4D47h ("MG")
  5573.     DX = 0052h (0,"R")
  5574. Return: AL = FFh
  5575.     DX = 584Dh
  5576. --------Q-2FDE02-----------------------------
  5577. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  5578.     AX = DE02h
  5579.     BX = mapping context of DESQview
  5580.     DX = handle of DESQview system task
  5581. Note:    driver should pass this call to previous handler after doing its work
  5582. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  5583. --------Q-2FDE03-----------------------------
  5584. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  5585.     AX = DE03h
  5586.     BX = mapping context of DESQview
  5587.     DX = handle of DESQview system task
  5588. Notes:    driver should pass this call to previous handler before doing its work
  5589.     DESQview makes this call when it is exiting, but before unhooking any
  5590.       interrupt vectors
  5591. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  5592. --------Q-2FDE04-----------------------------
  5593. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  5594.     AX = DE04h
  5595.     BX = mapping context of new process (see INT 15/AX=1016h)
  5596.     DX = handle of process
  5597. Return: nothing
  5598. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  5599.       (see below) from "common" memory to control access to XMS memory
  5600.     all DOS, BIOS, and DV API calls are valid in handler
  5601.     driver should pass this call to previous handler after processing it
  5602. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  5603.  
  5604. Format of XMS XDI structure:
  5605. Offset    Size    Description
  5606.  00h    DWORD    pointer to 10-byte record???
  5607.  04h    DWORD    pointer to next XMS XDI structure
  5608.  08h    WORD    mapping context
  5609.  0Ah    BYTE    ???
  5610.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  5611.         (FAR jump to next field)
  5612.  10h  6 BYTEs    FAR handler for XMS driver entry point
  5613.         (consists of a FAR CALL followed by RETF)
  5614. --------Q-2FDE05-----------------------------
  5615. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  5616.     AX = DE05h
  5617.     BX = mapping context of process (see INT 15/AX=1016h)
  5618.     DX = handle of last task in process
  5619. Return: nothing
  5620. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  5621.     driver should pass this call to previous handler before processing it
  5622.     all DOS, BIOS, and DV API calls except those generating a task switch
  5623.       are valid in handler
  5624. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  5625. --------Q-2FDE06-----------------------------
  5626. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  5627.     AX = DE06h
  5628.     BX = mapping context of process containing task
  5629.     DX = handle of new task
  5630. Notes:    driver should pass this call to previous handler after processing it
  5631.     all DOS, BIOS, and DV API calls are valid in handler
  5632. --------Q-2FDE07-----------------------------
  5633. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  5634.     AX = DE07h
  5635.     BX = mapping context of process containing task
  5636.     DX = handle of task
  5637. Notes:    driver should pass this call to previous handler before processing it
  5638.     all DOS, BIOS, and DV API calls except those generating a task switch
  5639.       are valid in handler
  5640. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  5641. --------Q-2FDE08-----------------------------
  5642. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  5643.     AX = DE08h
  5644.     BX = mapping context of task being switched from (see INT 15/AX=1016h)
  5645.     DX = handle of task being switched from
  5646. Notes:    invoked prior to task swap, interrupts, etc
  5647.     driver should pass this call to previous handler after processing it
  5648. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  5649. --------Q-2FDE09-----------------------------
  5650. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  5651.     AX = DE09h
  5652.     BX = mapping context of task being switched to (see INT 15/AX=1016h)
  5653.     DX = handle of task being switched to
  5654. Notes:    state is restored except for interrupts
  5655.     driver should pass this call to previous handler before processing it
  5656. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  5657. --------Q-2FDE0A-----------------------------
  5658. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  5659.     AX = DE0Ah
  5660.     BX = mapping context of task receiving focus
  5661.     DX = handle of running task
  5662. Notes:    driver should pass this call to previous handler before processing it
  5663.     this call often occurs inside a keyboard interrupt
  5664.     DV 2.42 does not provide this call to XDI handlers running inside a
  5665.       window; instead, it directly calls the INT 2F handler which was
  5666.       active at the time DV started
  5667. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  5668. --------Q-2FDE0B-----------------------------
  5669. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  5670.     AX = DE0Bh
  5671.     BX = mapping context of DESQview system task
  5672.     CX = number of system memory paragraphs required for the use of all
  5673.         XDI drivers (DV will add this to system memory in DVP buffer)
  5674.     DX = handle of DESQview system task
  5675.     SI = mapping context of new process if it starts
  5676.     ES:DI -> DVP buffer
  5677. Return: CX incremented as needed
  5678. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  5679.     driver should pass this call to previous handler before processing it
  5680. --------Q-2FDE0C-----------------------------
  5681. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  5682.     AX = DE0Ch
  5683.     BX = mapping context of task being swapped out (see INT 15/AX=1016h)
  5684.     DX = handle of DESQview system task
  5685. Note:    driver should pass this call to previous handler after processing it
  5686. --------Q-2FDE0D-----------------------------
  5687. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  5688.     AX = DE0Dh
  5689.     BX = mapping context of process just swapped in (see INT 15/AX=1016h)
  5690.     DX = handle of DESQview system task
  5691. Note:    driver should pass this call to previous handler before processing it
  5692. --------Q-2FDE0E-----------------------------
  5693. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  5694.     AX = DE0Eh
  5695.     BX = mapping context of DESQview system task
  5696.     DX = handle of DESQview system task
  5697.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  5698. Note:    driver should pass this call to previous handler after processing it
  5699. --------Q-2FDE0F-----------------------------
  5700. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  5701.     AX = DE0Fh
  5702. Note:    DESQview 2.50+ calls this function just before it completes its
  5703.       initialization.  At the time of the call, DESQview has not yet
  5704.       changed any interrupt vectors
  5705. SeeAlso: AX=DE02h
  5706. --------Q-2FDE10-----------------------------
  5707. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  5708.     AX = DE10h
  5709.     BX = mapping context of process (see INT 15/AX=1016h)
  5710.     DX = task handle of process
  5711. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  5712.       similar to AX=DE07h but allows the XDI handler to make calls which
  5713.       cause context switches
  5714. SeeAlso: AX=DE06h,AX=DE07h
  5715. --------c-2FDF00-----------------------------
  5716. INT 2F - HyperWare programs - INSTALLATION CHECK
  5717.     AX = DF00h
  5718.     BX = product code
  5719.         4248h ('BH') HyperStb
  5720.         4448h ('DH') HyperDisk v4.20+
  5721.         4B48h ('KH') HyperKey
  5722.         5348h ('SH') HyperScreen
  5723.     CX = 0000h
  5724.     DX = 0000h
  5725. Return: AL = status
  5726.         00h not installed
  5727.         FFh multiplex number in use
  5728.         CX = 5948h ('YH') if selected product installed
  5729.         ---HyperDisk---
  5730.         BX = code segment of resident portion
  5731.         DX = HyperDisk local data version
  5732. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5733. Note:    AH=DFh is the default; if it is already in use by some other program,
  5734.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5735. SeeAlso: INT 13/AX=8EEDh
  5736. Index:    installation check;HyperDisk|installation check;HyperStb
  5737. Index:    installation check;HyperKey|installation check;HyperScreen
  5738. Index:    HyperDisk;installation check|HyperStb;installation check
  5739. Index:    HyperKey;installation check|HyperScreen;installation check
  5740. --------c-2FDF01BX4448-----------------------
  5741. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  5742.     AX = DF01h
  5743.     BX = 4448h ('DH')
  5744. Return: AX = 0000h if function supported
  5745.         BX = number of cache buffers in use
  5746.         CX = number of cache buffers which have been modified
  5747.         DL = caching flags (see below)
  5748. Note:    AH=DFh is the default; if it is already in use by some other program,
  5749.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5750. SeeAlso: AX=DF00h,AX=DF02h
  5751.  
  5752. Bitfields for caching flags:
  5753.  bit 0    staged writes enabled for floppy disks
  5754.  bit 1    staged writes enabled for hard disks
  5755.  bit 2    writes verified on floppy disks
  5756.  bit 3    writes verified on hard disks
  5757.  bit 4    reserved (0)
  5758.  bit 5    reserved (0)
  5759.  bit 6    floppy caching enabled
  5760.  bit 7    all caching functions enabled
  5761. --------c-2FDF02BX4448-----------------------
  5762. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  5763.     AX = DF02h
  5764.     BX = 4448h ('DH')
  5765.     DL = new caching flags (see AX=DF01h)
  5766. Return: AX = 0000h if supported
  5767.         BX = number of cache buffers in use
  5768.         CX = number of cache buffers which have been modified
  5769.         DL = previous caching flags (see AX=DF01h)
  5770. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5771. Note:    AH=DFh is the default; if it is already in use by some other program,
  5772.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5773. SeeAlso: AX=DF00h,AX=DF01h
  5774. --------U-2FE000-----------------------------
  5775. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  5776.     AX = E000h
  5777. Return: AX = 4A52h ("JR") if present
  5778. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  5779.       apparent DOS version analogously to MS-DOS SETVER
  5780. Note:    this installation check differs from the usual one of returning AL=FFh
  5781. SeeAlso: AX=E001h,INT 21/AH=52h
  5782. --------K-2FE000DX5354-----------------------
  5783. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  5784.     AX = E000h
  5785.     DX = 5354h ("ST")
  5786. Return: AL = FFh if installed
  5787.         BX = version (BH = major, BL = BCD minor)
  5788.         DX = segment of resident code
  5789. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  5790. --------U-2FE001-----------------------------
  5791. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  5792.     AX = E001h
  5793. Return: AH = major version
  5794.     AL = minor version
  5795. SeeAlso: AX=E000h
  5796. --------U-2FE002-----------------------------
  5797. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  5798.     AX = E002h
  5799. Return: AL = FFh if successful
  5800.         BH = major DOS version
  5801.         BL = minor DOS version
  5802.         CH = DOS version flag
  5803.         CL = OEM number
  5804.         DH = major DR-DOS version number (FFh if unknown)
  5805.         DL = minor DR-DOS version number (FFh if unknown)
  5806. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  5807. --------U-2FE003-----------------------------
  5808. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  5809.     AX = E003h
  5810.     BH = new major DOS version
  5811.     BL = new minor DOS version
  5812.     CH = new DOS version flag
  5813.     CL = new DOS revision number
  5814.     DH = new OEM number
  5815. SeeAlso: AX=E002h
  5816. --------U-2FE004-----------------------------
  5817. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  5818.     AX = E004h
  5819. Return: AL = FFh if successful
  5820. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  5821. --------U-2FE005-----------------------------
  5822. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  5823.     AX = E005h
  5824. Return: AL = FFh if successful
  5825. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  5826. --------U-2FE006-----------------------------
  5827. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  5828.     AX = E006h
  5829. Return: AL = FFh if successful
  5830.         BL = status
  5831.         01h resident and active
  5832.         02h resident and inactive
  5833. --------U-2FE007-----------------------------
  5834. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  5835.     AX = E007h
  5836. Return: AL = FFh if successful
  5837.         BL = status
  5838.         00h if TaskMAX not loaded before SETDRVER
  5839.         FFh if TaskMAX was loaded before SETDRVER
  5840. SeeAlso: AX=E003h
  5841. --------U-2FE0-------------------------------
  5842. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  5843.     AH = E0h
  5844.     AL = 08h-10h
  5845. --------K-2FE100-----------------------------
  5846. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  5847.     AX = E100h
  5848. Return: AX = 0001h if installed
  5849.         DS:SI -> ASCIZ hotkey name
  5850.         DS:DI -> ASCIZ recording filename
  5851. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  5852.       by P2 Enterprises
  5853. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  5854. Index:    hotkeys;Phantom2
  5855. --------K-2FE101-----------------------------
  5856. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  5857.     AX = E101h
  5858.     BX = function mask (see below)
  5859.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  5860.     DS:DX -> ASCIZ filespec if BX bit 7 set
  5861. SeeAlso: AX=E100h
  5862. Index:    hotkeys;Phantom2
  5863.  
  5864. Bitfields for function mask
  5865.  bit 0    record
  5866.  bit 1    play
  5867.  bit 2    QuickPlay
  5868.  bit 3    loop
  5869.  bit 4    mode display toggle
  5870.  bit 5    sound toggle
  5871.  bit 6    set hotkey
  5872.  bit 7    set filespec
  5873. --------K-2FE102-----------------------------
  5874. INT 2F - Phantom2 v1.1+ - UNINSTALL
  5875.     AX = E102h
  5876. Return: AX = status
  5877.         0001h removal successful
  5878.         0002h not installed as TSR
  5879.         FFFFh disabled but not removed
  5880. SeeAlso: AX=E100h
  5881. --------K-2FE103-----------------------------
  5882. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  5883.     AX = E103h
  5884. Return: AX = 0001h
  5885. SeeAlso: AX=E100h
  5886. --------K-2FE300-----------------------------
  5887. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  5888.     AX = E300h
  5889. Return: AL = 00h not installed
  5890.          FEh if installed but suspended (v3.0+)
  5891.          FFh installed
  5892. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  5893. Note:    E3h is the default function number, but can be set to any value from
  5894.       C0h to FFh
  5895. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  5896. SeeAlso: AX=E307h,INT 66"Newkey"
  5897. --------V-2FE300-----------------------------
  5898. INT 2F - Blank - INSTALLATION CHECK
  5899.     AX = E300h
  5900. Return: AL = FFh if installed
  5901.         ES = resident code segment
  5902. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  5903. Note:    AH=E3h is the default, which may be reconfigured by the installation
  5904.       program in the registered version
  5905. Index:    screen saver;Blank
  5906. --------K-2FE301-----------------------------
  5907. INT 2F U - ANARKEY.COM v2+ - GET ???
  5908.     AX = E301h
  5909. Return: DX:BX -> ???
  5910. SeeAlso: AX=E300h
  5911.  
  5912. Format of returned data structure for ANARKEY v2.0:
  5913. Offset    Size    Description
  5914.  -7   7 BYTEs    signature ('ANARKEY')
  5915.  00h    WORD    ??? (I see 0001h in v2.0)
  5916.  02h    WORD    ??? (I see 0001h in v2.0)
  5917.  04h    WORD    ??? (I see 0 in v2.0)
  5918.  06h    WORD    PSP segment of next program loaded
  5919.  
  5920. Format of returned data structure for ANARKEY v3+:
  5921. Offset    Size    Description
  5922.  -1    BYTE    multiplex number
  5923.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  5924.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  5925.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  5926.  05h    WORD    PSP segment of next program loaded
  5927. --------K-2FE302-----------------------------
  5928. INT 2F U - ANARKEY.COM v3+ - ???
  5929.     AX = E302h
  5930.     BL = ???
  5931. Return: ???
  5932. SeeAlso: AX=E300h
  5933. --------K-2FE303-----------------------------
  5934. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  5935.     AX = E303h
  5936.     BL = function
  5937.         01h toggle insert mode
  5938.         02h display contents of history buffer
  5939.         03h write history buffer to file
  5940.         ES:DX -> file name
  5941.         04h clear history buffer
  5942.         05h undefine all aliases
  5943.         06h show aliases
  5944.         07h list programs using Unix switchar
  5945.         08h jump to bottom of history buffer
  5946.         09h (v4.0) add string to history buffer
  5947.         ES:DX -> ASCIZ string
  5948.         0Ah (v4.0) ???
  5949.         ES:DX -> ???
  5950.         0Bh (v4.0) copy string to edit buffer for use as next input line
  5951.         ES:DX -> ASCIZ string
  5952.         0Ch (v4.0) ???
  5953.         0Dh (v4.0) copy ??? to ???
  5954.         0Eh (v4.0) ???
  5955.         0Fh (v4.0) ???
  5956.         10h (v4.0) set ??? flag
  5957.         11h (v4.0) display error message about running in EMS under Windows
  5958. Return: ???
  5959. SeeAlso: AX=E300h
  5960. --------K-2FE304-----------------------------
  5961. INT 2F U - ANARKEY.COM v2+ - ???
  5962.     AX = E304h
  5963.     BL = ???
  5964. Return: ???
  5965. SeeAlso: AX=E300h
  5966. --------K-2FE305-----------------------------
  5967. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  5968.     AX = E305h
  5969.     BL = new state
  5970.         01h suspended
  5971.         00h enabled
  5972. SeeAlso: AX=E300h
  5973. --------K-2FE306-----------------------------
  5974. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5975.     AX = E306h
  5976. Return: AX = ???
  5977. SeeAlso: AX=E300h
  5978. --------K-2FE307-----------------------------
  5979. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5980.     AX = E307h
  5981. Return: AX = ???
  5982.     BL = ???
  5983. SeeAlso: AX=E300h
  5984. --------l-2FE44D-----------------------------
  5985. INT 2F - NDOS - API
  5986.     AX = E44Dh
  5987. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  5988.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  5989.       check returns AX=44EEh instead of AX=44DDh
  5990. SeeAlso: AX=D44Dh,AX=E44Eh
  5991. --------l-2FE44EBX0000-----------------------
  5992. INT 2F C - NDOS - AWAITING USER INPUT
  5993.     AX = E44Eh
  5994.     BX = 0000h NDOS is ready to display prompt
  5995.        = 0001h NDOS has displayed the prompt, about to accept user input
  5996. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  5997. SeeAlso: AX=E44Dh
  5998. --------E-2FED00-----------------------------
  5999. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  6000.     AX = ED00h
  6001.     BL = DOS extender
  6002.         01h 286dosx v1.3+ (Software Development Kit)
  6003.         02h 286dosx v1.3+ (Run-Time Kit)
  6004.         03h 386dosx v4.0+ (SDK)
  6005.         04h 386dosx v4.0+ (RTK)
  6006. Return: AL = status
  6007.         00h not installed
  6008.         FFh installed
  6009.         SI = 5048h ("PH")
  6010.         DI = 4152h ("AR")
  6011.         CH = major version number
  6012.         CL = minor version number
  6013.         DX = flags
  6014.             bit 0: running under DPMI
  6015.             bit 1: running under Phar Lap VMM
  6016.         if running under DPMI:
  6017.             BX = DPMI version (BH = major, BL = minor)
  6018. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  6019. --------E-2FED03-----------------------------
  6020. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  6021.     AX = ED03h
  6022.     CX = real-mode code segment
  6023.     DX = real-mode data segment
  6024. Return: CF clear if successful
  6025.         CX = protected-mode code segment selector
  6026.         DX = protected-mode data segment selector
  6027.         ES:DI -> real-mode entry point for calling protected-mode functions
  6028.             (see INT 21/AX=250Dh)
  6029.     CF set on error
  6030.         AX = error code
  6031.         0008h unable to allocate LDT descriptors
  6032. --------E-2FED80-----------------------------
  6033. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  6034.     AX = ED80h
  6035.     BL = DOS extender ID (see AX=ED00h)
  6036.     SI = 5048h ("PH")
  6037.     DI = 4152h ("AR")
  6038.     ???
  6039. Return: ???
  6040. --------y-2FEE00-----------------------------
  6041. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  6042.     AX = EE00h
  6043. Return: AL = FFh if installed
  6044. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  6045. SeeAlso: INT 21/AH=40h"NB.SYS"
  6046. --------U-2FEE00-----------------------------
  6047. INT 2F - XVIEW - INSTALLATION CHECK
  6048.     AX = EE00h
  6049. Return: AX = 00FFh if installed
  6050. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  6051. --------N-2FEE00-----------------------------
  6052. INT 2F - WEB v4.02 - INSTALLATION CHECK
  6053.     AX = EE00h
  6054. Return: AL = status
  6055.         00h not installed
  6056.         FFh installed
  6057. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6058. SeeAlso: AH=EEh"WEB",AX=EEF0h
  6059. --------U-2FEE01-----------------------------
  6060. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  6061.     AX = EE01h
  6062.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  6063. Return: AX = status (see below)
  6064. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  6065.       database; the current database is searched first
  6066. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  6067.  
  6068. Values for status:
  6069.  0000h    successful
  6070.  00F1h    unknown subfunction
  6071.  00F2h    unable to pop up
  6072. --------U-2FEE02-----------------------------
  6073. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  6074.     AX = EE02h
  6075.     DX = physical page number or anchor page number (see below)
  6076. Return: AX = status (see AX=EE01h)
  6077. Note:    physical page numbers are assigned by the hypertext compiler, and
  6078.       will change if a page is inserted in the middle
  6079. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  6080.  
  6081. Values for anchor page number:
  6082.  FFEAh    _Credits
  6083.  FFECh    _SearchTopics
  6084.  FFEDh    _SearchText
  6085.  FFF0h    _ManualList
  6086.  FFF5h    _HelpOnHelp
  6087.  FFF8h    _HomePage
  6088.  FFF9h    _IndexPage
  6089. --------U-2FEE03-----------------------------
  6090. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  6091.     AX = EE03h
  6092.     DS:DX -> data packet (see below)
  6093. Return: AX = status (see AX=EE01h)
  6094. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  6095.  
  6096. Format of data packet:
  6097. Offset    Size    Description
  6098.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  6099.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  6100.  08h    WORD    page number (0000h if keyword used)
  6101.  0Ah  6 BYTEs    reserved
  6102. --------U-2FEE04-----------------------------
  6103. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  6104.     AX = EE04h
  6105. Return: AX = status (see AX=EE01h)
  6106. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  6107. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  6108. --------U-2FEE05-----------------------------
  6109. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  6110.     AX = EE05h
  6111. Return: AX = status (see AX=EE01h)
  6112. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  6113. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  6114. --------U-2FEE06-----------------------------
  6115. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  6116.     AX = EE06h
  6117. Return: AX = status (see also AX=EE01h)
  6118.         0001h specified filename is not an xText database
  6119.         0002h no databases found
  6120.         0003h bad data in file
  6121.         0004h memory shortage
  6122.         0005h unable to open the requested file
  6123.         0007h invalid page number for file
  6124. Note:    although this call is not required, the exit code can alert the
  6125.       caller to problems; if the call is not made, the program should
  6126.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  6127.       and should not get keyboard input or attempt disk accesses during
  6128.       the delay
  6129. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  6130. --------N-2FEE-------------------------------
  6131. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  6132.     AH = EEh
  6133.     AL = module ID (see below)
  6134. Return: AX = 0000h if installed
  6135.         ES:DI -> far entry point for module-specific API calls (see below)
  6136. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6137. SeeAlso: AX=EE00h"WEB"
  6138.  
  6139. Values for module ID:
  6140.  10h    server module (SERVER.EXE)
  6141.  20h    client module (CLIENT.EXE)
  6142.  30h    mail module (MAIL.EXE)
  6143.  40h    spooler (PCSPOOL.EXE)
  6144.  50h    kernel module (KERNEL.EXE)
  6145.  60h    SAP module (KERNEL.EXE)
  6146.  70h    resident station manager (SM.EXE)
  6147.  90h    router module (ROUTER.EXE)
  6148.  
  6149. Call server module entry point with:
  6150.     BX = function
  6151.         0000h remove server module
  6152.         Return: AX = status (0000h if successful, else WEB error code)
  6153.         0001h create SYSINFO file
  6154.         Note:    the SYSINFO file is used by the station manager when
  6155.               displaying info for a particular station
  6156.         0002h get server object table
  6157.         Return: CX = number of server objects
  6158.             ES:DI -> server object table
  6159.         Note:    server objects include drives and devices that the
  6160.               server module controls
  6161.         0003h get server variables
  6162.         Return: ES:DI -> server variables
  6163.  
  6164. Call client module entry point with:
  6165.     BX = function
  6166.         0000h remove client module
  6167.         Return: AX = status (0000h if successful, else WEB error code)
  6168.         0001h decrement client-only flag
  6169.         0002h increment client-only flag
  6170.         0005h set device capture
  6171.         Note:    decrements DeviceOutput flag, telling the spooler that
  6172.               it may trap device output again
  6173.         0006h clear device capture
  6174.         Note:    increments DeviceOutput flag, telling the spooler that
  6175.               it should not trap device output (this is used
  6176.               internally by the spooler to prevent it from trapping
  6177.               its own output)
  6178.         0007h get client debug pointer
  6179.         Return: ES:DI -> client debug data structure (see below)
  6180.         0008h get root drive
  6181.         Return: AL = WEB startup drive
  6182.         0009h get maximum possible drive/device redirections
  6183.         Return: AL = maximum drive redirections
  6184.             CH = maximum LPTx redirections
  6185.             CL = maximum COMx redirections
  6186.         000Ah suspend client
  6187.         Return: AX = previous value of Suspend flag
  6188.         000Bh resume client
  6189.         Return: AX = previous value of Suspend flag
  6190.         000Ch get instance data
  6191.         CX = maximum number of structures in array
  6192.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  6193.             (see below)
  6194.         Return: CX = number of structures actually returned
  6195.         Note:    used internally by WEB4WIN
  6196.  
  6197. Call mail module entry point with:
  6198.     BX = function
  6199.         0000h remove mail module
  6200.         Return: AX = status (0000h successful, else WEB error code)
  6201.         0001h set mail poll
  6202.         Note:    schedules the WEB mail module
  6203.         0002h set mail notify
  6204.         Note:    sets the Notify flag, which determines whether the
  6205.               user will be notified when mail is received
  6206.         0003h clear mail notify
  6207.         Note:    clears the Notify flag, which determines whether the
  6208.               user will be notified when mail is received
  6209.         0004h check whether new mail has arrived
  6210.         Return: AL = new mail status
  6211.                 00h no new mail since last call
  6212.                 else new mail has arrived
  6213.         Note:    also clears the new-mail flag after retrieving it
  6214.         0005h send notify
  6215.         ES:DI -> name of WEB user to be notified
  6216.         0006h get post office
  6217.         Return: ES:DI -> full network path of Post Office subdirectory
  6218.  
  6219. Call spooler entry point with:
  6220.     BX = function
  6221.         0000h remove PCSpool module
  6222.         Return: AX = status (0000h successful, else WEB error code)
  6223.         0001h set spooler poll
  6224.         Note:    schedules the WEB spooler
  6225.         0002h check spooler changed
  6226.         Return:    AX = 0000h
  6227.         Note:    this call is a NOP in current versions of WEB
  6228.  
  6229. Call kernel entry point with:
  6230.     BX = function
  6231.         0000h remove kernel module
  6232.         Return: AX = status (0000h successful, else WEB error code)
  6233.         0001h set kernel ^S filter
  6234.         DL = new state (00h don't filter ^S, nonzero do filter)
  6235.         0002h get kernel data area
  6236.         Return: ES:DI -> kernel data area
  6237.         0003h display dialog box
  6238.         CL = dialog box type
  6239.             00h password
  6240.             01h E-Note received notification
  6241.             02h Novell login
  6242.             03h general notification
  6243.         DL = number of rows to display
  6244.         ES:SI -> array of far pointers to rows to be displayed
  6245.         ES:DI -> Pascal-style input buffer
  6246.         Return: AX = status (0000h successful, else error code)
  6247.         0004h kernel service events
  6248.         0005h get kernel's in-critical-section flag
  6249.         Return: ES:DI -> kernel InCriticalSection flag
  6250.         0006h schedule DOS event
  6251.         AL = directive
  6252.             00h do not ignore WEB ExtraBusy flag
  6253.             01h ignore ExtraBusy flag
  6254.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6255.         ES:SI -> WEB AES Event Control Block (ECB) (see below)
  6256.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  6257.               one used by IPX; this call schedules a special ECB
  6258.               to be executed at a later time.  Unlike IPX ECBs,
  6259.               the timeout must be set explicitly by the caller
  6260.             this function also calls function 0004h
  6261.         0007h check busy
  6262.         AL = directive
  6263.             00h do not ignore WEB ExtraBusy flag
  6264.             01h ignore ExtraBusy flag
  6265.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6266.         Return: AX = status (0000h not busy, else busy)
  6267.         0008h set keyboard intercept
  6268.         Note:    currently a NOP which returns immediately
  6269.         0009h get keyboard intercept
  6270.         Note:    currently a NOP which returns immediately
  6271.         000Ah get dialog flags
  6272.         Return: ES:DI -> kernel dialog flags (see below)
  6273.         000Bh get network path
  6274.         Return: ES:DI -> fully-qualified network path of file where
  6275.                 the screen is stored on Dialog calls
  6276.         000Ch kernel alternate dialog
  6277.         CL = dialog box type
  6278.             00h password
  6279.             01h E-Note received notification
  6280.             02h Novell login
  6281.             03h general notification
  6282.         DL = number of rows to display
  6283.         ES:SI -> array of far pointers to rows to be displayed
  6284.         ES:DI -> Pascal-style input buffer
  6285.         Return: AX = status (0000h successful, else error code)
  6286.         Note:    this function is identical to function 0003h except
  6287.               that it does not notify WEB4WIN of the impending
  6288.               dialog request
  6289.         000Dh get machine/operating system type
  6290.         Return: AX = machine/operating system type
  6291.                 01h IBM PC, MS-DOS
  6292.                 02h IBM PC, DOSV (Japanese)
  6293.                 03h NEC PC-9800, JDOS (Japanese)
  6294.                 04h IBM PC, Korean DBC DOS
  6295.  
  6296. Format of client debug data structure:
  6297. Offset    Size    Description
  6298.  00h    WORD    total files
  6299.  02h    WORD    files free
  6300.  04h    WORD    no files
  6301.  06h    WORD    minimum files
  6302.  08h    WORD    total FCBs
  6303.  0Ah    WORD    total safe FCBs
  6304.  0Ch    WORD    FCBs in use
  6305.  0Eh    WORD    wrong FCB
  6306.  10h    WORD    compressed
  6307.  12h    WORD    retransmits
  6308.  
  6309. Format of WIN_INSTANCE_DATA structure:
  6310. Offset    Size    Description
  6311.  00h    DWORD    real-mode pointer to data to be instanced
  6312.  04h    WORD    size of data to be instanced
  6313.  
  6314. Format of WEB AES Event Control Block:
  6315. Offset    Size    Description
  6316.  00h    DWORD    link address
  6317.  04h    WORD    ESR address
  6318.  08h    BYTE    InUse flag
  6319.  09h    BYTE    completion code
  6320.  0Ah  3 BYTEs    reserved
  6321.  0Dh    WORD    timeout
  6322.  0Fh    BYTE    IgnoreExtra flag
  6323.  10h    WORD    PSP
  6324.  12h    DWORD    DTA
  6325.  16h    WORD    AX value for DOS critical information
  6326.  18h    WORD    BX value for DOS critical information
  6327.  1Ah    WORD    CX value for DOS critical information
  6328.  1Ch    WORD    DX value for DOS critical information
  6329.  
  6330. Values for kernel dialog flags:
  6331.  01h    dialog will timeout
  6332.  02h    display stars instead of entered keystrokes
  6333. --------N-2FEEF0-----------------------------
  6334. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  6335.     AX = EEF0h
  6336.     BX = notification function ID (see below)
  6337. Return: varies by notification function
  6338. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6339. Note:    the notification functions are used internally by WEB modules to notify
  6340.       other modules and external programs of actions or event, and should
  6341.       never be called by an application
  6342. SeeAlso: AX=EE00h"WEB"
  6343.  
  6344. Values for Notification Function ID:
  6345.  00h    node added
  6346.  01h    node deleted
  6347.  02h    dial attempt
  6348.  03h    dial failed
  6349.  04h    file close
  6350.  05h    close connection
  6351.  07h    check Windows mode
  6352.  20h    link up
  6353.  21h    link down
  6354. --------K-2FF000-----------------------------
  6355. INT 2F U - 4MAP - INSTALLATION CHECK
  6356.     AX = F000h
  6357. Return: AX = 00FFh
  6358. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6359. Note:    returns AX=00FFh for any value of AL not listed here
  6360. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  6361. --------K-2FF001-----------------------------
  6362. INT 2F U - 4MAP - GET KEY MAPPINGS
  6363.     AX = F001h
  6364. Return: ES:BX -> key mappings
  6365. SeeAlso: AX=F000h
  6366. --------K-2FF002-----------------------------
  6367. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6368.     AX = F002h
  6369.     BL = character to insert
  6370. Return: AX = status
  6371.         0000h successful
  6372.         0001h buffer full
  6373. SeeAlso: AX=F000h,AX=F003h
  6374. --------K-2FF003-----------------------------
  6375. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6376.     AX = F003h
  6377.     BL = character to insert
  6378. Return: AX = status
  6379.         0000h successful
  6380.         0001h buffer full
  6381. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6382. SeeAlso: AX=F000h,AX=F002h
  6383. --------m-2FF1-------------------------------
  6384. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  6385.     AH = F1h
  6386.     AL <> F1h
  6387. Return: AL = F1h if installed
  6388. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  6389.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  6390.       TSR at a time is brought back into memory at the user's request.
  6391. --------E-2FF100-----------------------------
  6392. INT 2F - DOS EXTENDER INSTALLATION CHECK
  6393.     AX = F100h
  6394. Return: AL = FFh if DOS extender present
  6395.         SI = 444Fh ("DO")
  6396.         DI = 5358h ("SX")
  6397. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  6398. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  6399. --------W-2FF200-----------------------------
  6400. INT 2F - WINX - INSTALLATION CHECK
  6401.     AX = F200h
  6402. Return: AX = 00FFh if installed
  6403. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  6404.       launch Windows applications from a DOS Box; it was published in
  6405.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  6406.       (Addison-Wesley) and should not be confused with the Windows driver
  6407.       of the same name which is part of the DESQview/X package
  6408. --------W-2FF201-----------------------------
  6409. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  6410.     AX = F201h
  6411. Return: AX = FFFFh if WINX is busy processing a different request
  6412.        = 0000h if successful
  6413.         BX:CX = address of server buffer
  6414.  
  6415. Format of server buffer
  6416. Offset    Size    Description
  6417.  00h    BYTE    command/status
  6418.         00h buffer available
  6419.         01h buffer contains result
  6420.         02h change directory
  6421.         03h execute program
  6422.         FFh terminate windows portion of WINX
  6423.  01h  ? BYTEs    command (03h) or directory (02h)
  6424.   or
  6425.  01h    DWORD    result (01h)
  6426. --------W-2FF202-----------------------------
  6427. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  6428.     AX = F202h
  6429.     BX:CX -> directory
  6430. Return: AX = FFFFh if WINX is busy processing a different request
  6431.        = 0000h if successful
  6432. SeeAlso: AX=F200h,AX=F203h
  6433. --------W-2FF203-----------------------------
  6434. INT 2F - WINX - EXECUTE COMMAND
  6435.     AX = F203h
  6436.     BX:CX -> command
  6437. Return: AX = FFFFh if WINX is busy processing a different request
  6438.        = 0000h if successful
  6439. SeeAlso: AX=F200h,AX=F202h
  6440. --------G-2FF400-----------------------------
  6441. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  6442.     AX = F400h
  6443. Return: AL = 01h if installed
  6444. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  6445.       of PC Magazine; when run as a TSR it can determine which IRQs are
  6446.       used only when a device is active
  6447. SeeAlso: AX=F401h
  6448. --------G-2FF401CX5121-----------------------
  6449. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  6450.     AX = F401h
  6451.     CX = 5121h ('Q!')
  6452. Return: AX:DX -> hooked interrupt table (see below)
  6453. SeeAlso: AX=F400h
  6454.  
  6455. Format of hooked interrupt table:
  6456. Offset    Size    Description
  6457.  00h    BYTE    1Ch
  6458.  01h    DWORD    FINDIRQ's INT 1C handler
  6459.  05h    DWORD    original INT 1C handler
  6460.  09h    BYTE    28h
  6461.  0Ah    DWORD    FINDIRQ's INT 28 handler
  6462.  0Eh    DWORD    original INT 28 handler
  6463.  12h    BYTE    2Fh
  6464.  13h    DWORD    FINDIRQ's INT 2F handler
  6465.  17h    DWORD    original INT 2F handler
  6466. --------d-2FF700-----------------------------
  6467. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  6468.     AX = F700h
  6469. Return: AL = 00h not installed
  6470.          FFh installed
  6471. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  6472. --------d-2FF701-----------------------------
  6473. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  6474.     AX = F701h
  6475.     BX:CX = 32-bit count of 55ms timer ticks
  6476. --------d-2FF800CX4455-----------------------
  6477. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  6478.     AX = F800h
  6479.     CX = 4455h ("DU")
  6480.     DL = 45h ("E")
  6481. Return: AL = FFh if installed
  6482.         ES:BX -> ASCII signature "Universal Data Exchange"
  6483. Program: SuperStor is a disk-compression program by Addstor.
  6484. Note:    returns AX=0001h if AL is not 00h or 01h
  6485. SeeAlso: AX=1001h,AX=F801h
  6486. --------d-2FF801CX4455-----------------------
  6487. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  6488.     AX = F801h
  6489.     CX = 4455h ("DU")
  6490.     DL = 45h ("E")
  6491.     ES:BX = return address if successful
  6492. Return: at specified address if successfully removed from memory
  6493.     else
  6494.         AL = error code
  6495.         ???
  6496. Program: SuperStor is a disk-compression program by Addstor.
  6497. Note:    returns AX=0001h if AL is not 00h or 01h
  6498. SeeAlso: AX=1001h,AX=F800h
  6499. --------*-2FFB-------------------------------
  6500. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  6501.     AH = FBh
  6502. --------a-2FFB00-----------------------------
  6503. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  6504.     AX = FB00h
  6505. Return: AX = 00FFh if installed
  6506. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6507. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  6508. --------U-2FFB00-----------------------------
  6509. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  6510.     AX = FB00h
  6511. Return: AX = FFFFh if installed
  6512.         BX = version (BCD, BH=major, BL=minor)
  6513. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  6514. --------a-2FFB01-----------------------------
  6515. INT 2F U - AutoBraille v1.1A - ???
  6516.     AX = FB01h
  6517.     ???
  6518. Return: ???
  6519. --------U-2FFB01-----------------------------
  6520. INT 2F U - Jot-It! v1.50 - GET USER NAME
  6521.     AX = FB01h
  6522. Return: DX:BX -> ASCIZ user name
  6523. SeeAlso: AX=FB02h"Jot-It"
  6524. --------a-2FFB02-----------------------------
  6525. INT 2F U - AutoBraille v1.1A - ???
  6526.     AX = FB02h
  6527. Return: AH = ???
  6528.     AL = ???
  6529. --------U-2FFB02-----------------------------
  6530. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  6531.     AX = FB02h
  6532. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  6533. SeeAlso: AX=FB01h"Jot-It"
  6534. --------a-2FFB03-----------------------------
  6535. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  6536.     AX = FB03h
  6537. Return: AX = ???
  6538. --------U-2FFB03-----------------------------
  6539. INT 2F U - Jot-It! v1.50 - UNINSTALL
  6540.     AX = FB03h
  6541. Return: resident code removed from memory
  6542. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  6543.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  6544. SeeAlso: AX=FB00h"Jot-It"
  6545. --------a-2FFB-------------------------------
  6546. INT 2F U - AutoBraille v1.1A - SET ???
  6547.     AH = FBh
  6548.     AL = 04h-08h
  6549. Return: AX = 0000h
  6550. --------a-2FFB-------------------------------
  6551. INT 2F U - AutoBraille v1.1A - SET ???
  6552.     AH = FBh
  6553.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  6554. Return: ???
  6555. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6556. --------a-2FFB-------------------------------
  6557. INT 2F U - AutoBraille v1.1A - SET ???
  6558.     AH = FBh
  6559.     AL = 10h-1Fh
  6560.     ???
  6561. Return: ???
  6562. --------a-2FFB20-----------------------------
  6563. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  6564.     AX = FB20h
  6565.     BL = flags to set
  6566. SeeAlso: AX=FB21h"AutoBraille"
  6567. --------a-2FFB21-----------------------------
  6568. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  6569.     AX = FB21h
  6570.     BL = flags to clear
  6571. SeeAlso: AX=FB20h"AutoBraille"
  6572. --------a-2FFB22-----------------------------
  6573. INT 2F U - AutoBraille v1.1A - SET ???
  6574.     AX = FB22h
  6575.     BL = ???
  6576. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6577. --------a-2FFB28-----------------------------
  6578. INT 2F U - AutoBraille v1.1A - ???
  6579.     AX = FB28h
  6580.     BX = ???
  6581.     ???
  6582. Return: ???
  6583. SeeAlso: AX=FB29h"AutoBraille"
  6584. --------a-2FFB29-----------------------------
  6585. INT 2F U - AutoBraille v1.1A - ???
  6586.     AX = FB29h
  6587.     BX = ???
  6588.     ???
  6589. Return: ???
  6590. SeeAlso: AX=FB28h"AutoBraille"
  6591. --------a-2FFB-------------------------------
  6592. INT 2F U - AutoBraille v1.1A - SET ???
  6593.     AH = FBh
  6594.     AL = 2Bh-34h
  6595.     BX = ???
  6596. --------a-2FFB35-----------------------------
  6597. INT 2F U - AutoBraille v1.1A - SET ???
  6598.     AX = FB35h
  6599.     BL = ???
  6600. --------a-2FFB36-----------------------------
  6601. INT 2F U - AutoBraille v1.1A - SET ???
  6602.     AX = FB36h
  6603.     BL = ???
  6604. --------a-2FFB37-----------------------------
  6605. INT 2F U - AutoBraille v1.1A - SET ???
  6606.     AX = FB37h
  6607.     BL = ???
  6608. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6609. --------E-2FFB42BX0001-----------------------
  6610. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  6611.     AX = FB42h
  6612.     BX = 0001h
  6613. Return: AX = version number??? (AL=major, AH=minor)
  6614.     CX = next-selector increment
  6615. ---BC2.0---
  6616.     ES:BX -> 80-byte buffer for ???
  6617.     DX = DPMI version
  6618. ---BC3.0---
  6619.     BX = ??? (0000h)
  6620.     DX = ???
  6621.     ES:SI -> list of valid selectors ???
  6622. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6623.       as version 1.000, while the version distributed with BC++ 3.0
  6624.       identifies itself as version 1.0; the former is 10864 bytes, the
  6625.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  6626.       the BC3.0 version also adds a DPMI host and DOS extender
  6627.     the BC++ 2.0 version displays an error message if called with BX
  6628.       values other than 0001h-0008h
  6629. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  6630. --------E-2FFB42BX0002-----------------------
  6631. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6632.     AX = FB42h
  6633.     BX = 0002h
  6634.     CX = size in bytes
  6635.     DX = bit flags
  6636.         bit 2: set to allocate DOS memory, clear for DPMI memory
  6637.     SI = selector of descriptor to be modified to access allocated memory
  6638.     DI = selector of a second descriptor to be modified
  6639. Return: AX = ??? or 0000h on error
  6640.     CX:DX = linear base address of DPMI memory block
  6641.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  6642.     ???
  6643. Note:    two segment descriptors may be set if a code and an aliased data
  6644.       segment are required; if only one descriptor is needed, SI should
  6645.       equal DI on entry
  6646. BUG:    when allocating DOS memory, the code computes the linear address by
  6647.       multiplying the segment number by 4 rather than shifting by 4
  6648. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6649. --------E-2FFB42BX0002-----------------------
  6650. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6651.     AX = FB42h
  6652.     BX = 0002h
  6653.     ES:SI -> memory block info (see below)
  6654. Return: ???
  6655. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6656.       as version 1.000, while the version distributed with BC++ 3.0
  6657.       identifies itself as version 1.0; the former is 10864 bytes, the
  6658.       latter 22180 bytes.
  6659. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6660.  
  6661. Format of memory block info:
  6662. Offset    Size    Description
  6663.  00h    WORD    flags
  6664.         bit 0: set if data segment rather than code segment
  6665.         bit 1: information valid
  6666.         bit 2: set if DOS memory block rather than DPMI memory block
  6667.         bit 4: ???
  6668.         bit 15: set if no LDT selectors for memory block???
  6669.  02h    DWORD    block size in bytes
  6670. ---DPMI memory block---
  6671.  06h    DWORD    DPMI memory block handle
  6672. ---DOS memory block---
  6673.  06h    WORD    real-mode segment of memory block
  6674.  08h    WORD    selector of memory block
  6675. ---
  6676.  0Ah    DWORD    linear address of memory
  6677.  0Eh    WORD    memory operation error code
  6678.         0008h no more free LDT descriptors
  6679. ---if flags bit 0 clear---
  6680.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  6681.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  6682. ---if flags bit 0 set---
  6683.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  6684.  12h    WORD    unused???
  6685. --------E-2FFB42BX0003-----------------------
  6686. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  6687.     AX = FB42h
  6688.     BX = 0003h
  6689. Return: DX:AX = size of largest free block in paragraphs
  6690.         0000h:0000h on error (BC3.0 version only)
  6691. Note:    AX and DX are destroyed on error, but no other error indicator is
  6692.       returned, under the BC++ 2.0 version of DPMILOAD
  6693. SeeAlso: AX=FB42h/BX=0002h
  6694. --------E-2FFB42BX0004-----------------------
  6695. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  6696.     AX = FB42h
  6697.     BX = 0004h
  6698.     DS:DX -> ASCIZ filename of protected-mode executable
  6699. Return: CX = selector of ??? or 0000h
  6700. ---BC3.0---
  6701.     DX = status (0000h,FFF4h,others???) (see below)
  6702. Note:    the filename may also be terminated by a CR rather than a NUL under the
  6703.       BC++ 3.0 version of DPMILOAD
  6704.  
  6705. Values for status:
  6706.  0000h    successful
  6707.  0001h    ??? failure
  6708.  0002h    invalid selector
  6709.  0004h    unknown error
  6710.  0008h    no more LDT descriptors available???
  6711.  FFDEh    unable to set descriptor
  6712.  FFDFh    unable to get segment base address
  6713.  FFE0h    ???
  6714.  FFF2h    invalid parameter value
  6715.  FFF4h    component of filename too long (name not in 8.3 format)
  6716.  FFF5h    pathname too long (>79 chars)
  6717.  FFF6h    ???
  6718.  FFF8h    ???
  6719.  FFF9h    index out of range
  6720.  FFFAh    ???
  6721.  FFFCh    invalid access to code segment???
  6722.  FFFEh    ???
  6723.  FFFFh    general error
  6724. --------E-2FFB42BX0005-----------------------
  6725. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  6726.     AX = FB42h
  6727.     BX = 0005h
  6728.     CX = selector of DPMILOAD data (see below)
  6729.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  6730. Return: DX = status (see AX=FB42h/BX=0004h)
  6731.         0000h successful
  6732.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6733.         else
  6734.         BX destroyed
  6735. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  6736.  
  6737. Format of DPMILOAD data:
  6738. Offset    Size    Description
  6739.  00h 12 BYTEs    ???
  6740.  0Ch    WORD    ??? bit flags
  6741.  0Eh 14 BYTEs    ???
  6742.  1Ch    WORD    number of memory control records
  6743.  1Eh 25 BYTEs    ???
  6744.  37h    BYTE    ??? bit flags
  6745.         bit 4: data valid???
  6746.  38h  4 BYTEs    ???
  6747.  3Ch    WORD    ???
  6748.  3Eh 12 BYTEs    ???
  6749.  46h    BYTE    ??? counter
  6750.  47h    BYTE    ???
  6751.  48h    BYTE    ???
  6752.  49h    BYTE    ???
  6753.  4Ah    WORD    ???
  6754.  4Ch  2 BYTEs    ???
  6755.  4Eh    WORD    offset of array of 64-byte memory control records
  6756.  52h    WORD    offset of name list (see below)
  6757.  54h  4 BYTEs    ???
  6758.  58h    WORD    offset of array of 6-byte objects
  6759.  5Ah  8 BYTEs    ???
  6760.  62h  9 BYTEs    ASCIZ name for ???
  6761.  6Bh  9 BYTEs    ASCIZ name for ???
  6762.     ???
  6763.  
  6764. Format of name list entry [array]:
  6765. Offset    Size    Description
  6766.  00h    BYTE    length of name (00h if end of array)
  6767.  01h  N BYTEs    name
  6768.  N+1    WORD    1-based index into array of unknown 6-byte objects
  6769.  
  6770. Format of 6-byte objects:
  6771. Offset    Size    Description
  6772.  00h    BYTE    ???
  6773.  01h    BYTE    ???
  6774.  02h    BYTE    ???
  6775.  03h    BYTE    1-based index of memory control record
  6776.  04h    WORD    ???
  6777.  
  6778. Format of memory control record:
  6779. Offset    Size    Description
  6780.  00h 20 BYTEs    memory block info (see AX=FB42h/BX=0002h)
  6781.  14h  6 BYTEs    ???
  6782.  1Ah    BYTE    ???
  6783.  1Bh  2 BYTEs    ???
  6784.  1Dh    BYTE    ??? bit flags
  6785.  1Eh 14 BYTEs    ???
  6786.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  6787.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  6788.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  6789.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  6790.  3Ch  4 BYTEs    ???
  6791. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  6792.       the pointers at offsets 34h and 38h
  6793. --------E-2FFB42BX0006-----------------------
  6794. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  6795.     AX = FB42h
  6796.     BX = 0006h
  6797.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6798.     DX = 1-based index into array of ??? 6-byte objects
  6799. Return: DX = status (see AX=FB42h/BX=0004h)
  6800.         0000h successful
  6801.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6802.         else
  6803.         BX destroyed
  6804. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  6805. --------E-2FFB42BX0007-----------------------
  6806. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  6807.     AX = FB42h
  6808.     BX = 0007h
  6809.     CX = selector of ???
  6810. Return: ???
  6811. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6812.       as version 1.000, while the version distributed with BC++ 3.0
  6813.       identifies itself as version 1.0; the former is 10864 bytes, the
  6814.       latter 22180 bytes.
  6815. --------E-2FFB42BX0007-----------------------
  6816. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6817.     AX = FB42h
  6818.     BX = 0007h
  6819.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6820.     ???
  6821. Return: DX = status (see AX=FB42h/BX=0004h)
  6822.         0000h successful
  6823.         AX = ???
  6824. --------E-2FFB42BX0008-----------------------
  6825. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6826.     AX = FB42h
  6827.     BX = 0008h
  6828.     CX = bit flags
  6829.         bit 2: set if DPMI memory, clear if DOS memory
  6830.     DX = selector of DOS memory block
  6831.     SI:DI = handle of DPMI memory block
  6832. Return: DX = 0000h on error, unchanged if succcessful
  6833. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6834.       as version 1.000, while the version distributed with BC++ 3.0
  6835.       identifies itself as version 1.0; the former is 10864 bytes, the
  6836.       latter 22180 bytes.
  6837. SeeAlso: AX=FB42h/BX=0002h
  6838. --------E-2FFB42BX0008-----------------------
  6839. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6840.     AX = FB42h
  6841.     BX = 0008h
  6842.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6843. Return: ???
  6844. SeeAlso: AX=FB42h/BX=0009h
  6845. --------E-2FFB42BX0009-----------------------
  6846. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  6847.     AX = FB42h
  6848.     BX = 0009h
  6849.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6850.     ???
  6851. Return: ???
  6852. SeeAlso: AX=FB42h/BX=0008h"3.0"
  6853. --------E-2FFB42BX000A-----------------------
  6854. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  6855.     AX = FB42h
  6856.     BX = 000Ah
  6857.     CX = 0001h
  6858.     DX = ???
  6859.     SI = ???
  6860. Return: after user exits subshell
  6861. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  6862.       function is not available in protected mode.
  6863.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  6864.       version also adds a DPMI host and DOS extender.
  6865. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  6866. --------E-2FFB42BX000B-----------------------
  6867. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  6868.     AX = FB42h
  6869.     BX = 000Bh
  6870. --------E-2FFB42BX000C-----------------------
  6871. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  6872.     AX = FB42h
  6873.     BX = 000Ch
  6874.     ES:SI -> memory block info ??? (see AX=FB42h/BX=0002h"3.0")
  6875. Return: DX = status???
  6876. SeeAlso: AX=FB42h/BX=000Fh
  6877. --------E-2FFB42BX000D-----------------------
  6878. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  6879.     AX = FB42h
  6880.     BX = 000Dh
  6881.     CX = number of words to copy from protected-mode to real mode stack
  6882.     DL = interrupt number
  6883.     DH = flags
  6884.         bit 0: reset the interrupt controller and A20 line
  6885.     ES:DI -> real-mode call structure (see INT 31/AX=0300h)
  6886. Return: CX = status
  6887.         0000h successful
  6888.         0001h failed
  6889. SeeAlso: INT 31/AX=0300h
  6890. --------E-2FFB42BX000E-----------------------
  6891. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  6892.     AX = FB42h
  6893.     BX = 000Eh
  6894.     DS:DX -> ASCIZ or CR-terminated name of ???
  6895. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) corresponding to
  6896.         name, 0000h on error
  6897. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  6898. --------E-2FFB42BX000F-----------------------
  6899. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  6900.     AX = FB42h
  6901.     BX = 000Fh
  6902.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6903. Return: ???
  6904. SeeAlso: AX=FB42h/BX=000Ch
  6905. --------E-2FFB42BX0010-----------------------
  6906. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  6907.     AX = FB42h
  6908.     BX = 0010h
  6909.     DX = segment number
  6910. Return: CX = status (see also AX=FB42h/BX=0004h)
  6911.         0000h successful
  6912.         DX = selector number for descriptor
  6913.         0008h failed
  6914. SeeAlso: AX=FB42h/BX=0023h
  6915. --------E-2FFB42BX0011-----------------------
  6916. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6917.     AX = FB42h
  6918.     BX = 0011h
  6919.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6920.     ???
  6921. Return: DX = status (see also AX=FB42h/BX=0004h)
  6922.         0000h successful
  6923.         AX:BX -> ??? name
  6924.         0002h invalid selector
  6925.         FFFEh ??? error
  6926. --------E-2FFB42BX0012-----------------------
  6927. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6928.     AX = FB42h
  6929.     BX = 0012h
  6930.     CX = selector for ???
  6931. Return: CX = selector for ???
  6932. --------E-2FFB42BX0013-----------------------
  6933. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6934.     AX = FB42h
  6935.     BX = 0013h
  6936.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6937.     DX = 1-based index of ???
  6938. Return: CX = status (see also AX=FB42h/BX=0004h)
  6939.         0000h successful
  6940.         BX = ??? or 0000h
  6941.         0002h invalid selector
  6942.         FFF9h ??? error
  6943. --------E-2FFB42BX0014-----------------------
  6944. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  6945.     AX = FB42h
  6946.     BX = 0014h
  6947.     CX = 0001h
  6948. Return: BX = 0000h if installed
  6949. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6950.       real or V86 mode
  6951. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  6952. --------E-2FFB42BX0015-----------------------
  6953. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  6954.     AX = FB42h
  6955.     BX = 0015h
  6956.     CX = 0001h
  6957. Return: ???
  6958. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6959.       real or V86 mode
  6960. SeeAlso: AX=FB42h/BX=000Ah
  6961. --------E-2FFB42BX0016-----------------------
  6962. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6963.     AX = FB42h
  6964.     BX = 0016h
  6965.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6966. Return: DX = status (see also AX=FB42h/BX=0004h)
  6967.         0000h successful
  6968.         CX = ???
  6969. --------E-2FFB42BX0017-----------------------
  6970. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6971.     AX = FB42h
  6972.     BX = 0017h
  6973.     CX = ???
  6974.     DX = ???
  6975.     ???
  6976. Return: DX = status (0000h,0001h) (see below)
  6977. --------E-2FFB42BX0018-----------------------
  6978. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  6979.     AX = FB42h
  6980.     BX = 0018h
  6981.     CX = ???
  6982. --------E-2FFB42BX0019-----------------------
  6983. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6984.     AX = FB42h
  6985.     BX = 0019h
  6986.     CX = selector for ???
  6987.     ???
  6988. Return: DX = status (see also AX=FB42h/BX=0004h)
  6989.         0000h successful
  6990.         CX = selector for ???
  6991. --------E-2FFB42BX001A-----------------------
  6992. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6993.     AX = FB42h
  6994.     BX = 001Ah
  6995.     CX = selector for ???
  6996.     ???
  6997. Return: DX = status (see also AX=FB42h/BX=0004h)
  6998.         0000h successful
  6999.         0004h failed
  7000.     CX:BX -> ???
  7001. --------E-2FFB42BX001B-----------------------
  7002. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7003.     AX = FB42h
  7004.     BX = 001Bh
  7005.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7006.     DX = offset of ???
  7007. Return: DX = status (see also AX=FB42h/BX=0004h)
  7008.         0000h successful
  7009.         BX = selector for ???
  7010.         CX = selector for ???
  7011.         0002h invalid selector
  7012. --------E-2FFB42BX001C-----------------------
  7013. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7014.     AX = FB42h
  7015.     BX = 001Ch
  7016.     ES = selector for DPMILOAD data (see AX=FB42h/BX=0005h)
  7017.     CX = 1-based index of ???
  7018.     DX = 1-based index of ???
  7019. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  7020. --------E-2FFB42BX001D-----------------------
  7021. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7022.     AX = FB42h
  7023.     BX = 001Dh
  7024. Return: CX:DX = ???
  7025. --------E-2FFB42BX001E-----------------------
  7026. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7027.     AX = FB42h
  7028.     BX = 001Eh
  7029.     CX = ???
  7030.     ???
  7031. Return: DX = status (see also AX=FB42h/BX=0004h)
  7032.         0000h successful
  7033.         FFF7h ??? error
  7034.     CX:BX -> ???
  7035. --------E-2FFB42BX001F-----------------------
  7036. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7037.     AX = FB42h
  7038.     BX = 001Fh
  7039.     DS:DX -> 8-character name of ???
  7040.     ???
  7041. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) for ???
  7042.         0000h on error
  7043. SeeAlso: AX=FB42h/BX=000Eh
  7044. --------E-2FFB42BX0020-----------------------
  7045. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  7046.     AX = FB42h
  7047.     BX = 0020h
  7048. Return: DX = ??? (always 0000h)
  7049. --------E-2FFB42BX0021-----------------------
  7050. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  7051.     AX = FB42h
  7052.     BX = 0021h
  7053.     CL = exception number (00h-1Fh)
  7054. Return: DX = status (see also AX=FB42h/BX=0004h)
  7055.         0000h successful
  7056.         AX:BX = selector:offset of handler
  7057.         FFF2h unable to get exception handler vector
  7058. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  7059. --------E-2FFB42BX0022-----------------------
  7060. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  7061.     AX = FB42h
  7062.     BX = 0022h
  7063.     CL = exception number (00h-1Fh)
  7064.     SI:DX = selector:offset of new handler
  7065. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  7066. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  7067. --------E-2FFB42BX0023-----------------------
  7068. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  7069.     AX = FB42h
  7070.     BX = 0023h
  7071.     CX = selector
  7072. Return: DX = status (see also AX=FB42h/BX=0004h)
  7073.         0000h successful
  7074.         CX = real-mode segment number
  7075.         FFF2h descriptor has invalid base address for real-mode segment
  7076. SeeAlso: AX=FB42h/BX=0010h
  7077. --------E-2FFB42BX0024-----------------------
  7078. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  7079.     AX = FB42h
  7080.     BX = 0024h
  7081.     CL = interrupt number
  7082. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  7083.     AX:BX = selector:offset of handler
  7084. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  7085. --------E-2FFB42BX0025-----------------------
  7086. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  7087.     AX = FB42h
  7088.     BX = 0025h
  7089.     CL = interrupt number
  7090.     SI:DX = selector:offset of new handler
  7091. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  7092. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  7093. --------E-2FFB42BX0026-----------------------
  7094. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7095.     AX = FB42h
  7096.     BX = 0026h
  7097.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7098.     DX = 1-based index of ???
  7099.     ???
  7100. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  7101.         0000h successful
  7102.         BX = offset of ??? within data structure
  7103. --------E-2FFB42BX0027-----------------------
  7104. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7105.     AX = FB42h
  7106.     BX = 0027h
  7107.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7108.     DX = offset of ???
  7109. Return: DX = status (see also AX=FB42h/BX=0004h)
  7110.         0000h successful
  7111.         BX = ???
  7112. --------E-2FFB42BX0080-----------------------
  7113. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7114.     AX = FB42h
  7115.     BX = 0080h
  7116.     ???
  7117. Return: AX = ???
  7118.     ???
  7119. --------E-2FFB42BX0081-----------------------
  7120. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7121.     AX = FB42h
  7122.     BX = 0081h
  7123.     ???
  7124. Return: AX = ???
  7125.     ???
  7126. --------E-2FFB42BX1001-----------------------
  7127. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  7128.     AX = FB42h
  7129.     BX = 1001h
  7130. Return: BX = 0000h
  7131. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  7132. --------E-2FFB42BX1002-----------------------
  7133. INT 2F U - Borland RTM.EXE 1.0 - ???
  7134.     AX = FB42h
  7135.     BX = 1002h
  7136.     ???
  7137. Return: ???
  7138. SeeAlso: AX=FB42h/BX=1001h
  7139. --------E-2FFB42BX1003-----------------------
  7140. INT 2F U - Borland RTM.EXE 1.0 - ???
  7141.     AX = FB42h
  7142.     BX = 1003h
  7143.     ???
  7144. Return: ???
  7145. SeeAlso: AX=FB42h/BX=1001h
  7146. --------E-2FFB43-----------------------------
  7147. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  7148.     AX = FB43h
  7149.     BX = subfunction (at least 0000h-000Eh)
  7150. Notes:    this function is only present in protected mode; it does nothing but
  7151.       an immediate IRET
  7152.     DPMILOAD.EXE itself calls various subfunctions:
  7153.         subfunction 0004h is called with CX=selector of ???, DI=selector
  7154.         of DPMILOAD data
  7155.         subfunction 0008h is called with CX=selector of DPMILOAD data
  7156. SeeAlso: AX=FB42h/BX=0001h
  7157. --------G-2FFB43BX0100-----------------------
  7158. INT 2F PU - Borland TDX - INSTALLATION CHECK
  7159.     AX = FB43h
  7160.     BX = 0100h
  7161. Return: BX = FB43h if loaded
  7162. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  7163. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  7164.       should install their own stack and general protection exception
  7165.       handlers, or allow TDX to handle those exceptions
  7166. --------a-2FFB64-----------------------------
  7167. INT 2F U - AutoBraille v1.1A - GET ???
  7168.     AX = FB64h
  7169. Return: AX = ??? (0006h seen)
  7170. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7171. --------E-2FFBA1BX0081-----------------------
  7172. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  7173.     AX = FBA1h
  7174.     BX = 0081h
  7175.     ES:DI -> 16-byte buffer
  7176. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  7177. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  7178. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  7179.       extender was moved into DPMILOAD.
  7180. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  7181. SeeAlso: INT 21/AX=4403h"TKERNEL"
  7182. --------E-2FFBA1BX0082-----------------------
  7183. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  7184.     AX = FBA1h
  7185.     BX = 0082h
  7186.     ES:DI -> response buffer (see below)
  7187. Return: ES:DI buffer filled
  7188. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7189.  
  7190. Format of response buffer:
  7191. Offset    Size    Description
  7192.  00h  4 BYTEs    signature "IABH"
  7193.  04h    DWORD    pointer to FAR extender entry point
  7194.  
  7195. Call entry point with:
  7196.     AX = function number
  7197.         0000h initialize???
  7198.         STACK:    WORD  ???
  7199.         Return: AX = status???
  7200.             STACK unchanged
  7201.         0001h get version???
  7202.         Return: AX = 0200h for v2.0.34
  7203.         0002h get ???
  7204.         Return: AX = ??? (011Eh or 0182h seen)
  7205.         0003h load protected-mode executable
  7206.         STACK:    DWORD -> ASCIZ filename of executable
  7207.             DWORD    ???
  7208.             DWORD -> program arguments (counted string plus CR)
  7209.             DWORD -> environment for protected-mode executable
  7210.                 (terminated with two consecutive NULs)
  7211.             DWORD -> WORD buffer for ???
  7212.         Return: AX = status???
  7213.             STACK unchanged
  7214.         0004h get descriptor
  7215.         STACK:    WORD    selector for which to get descriptor
  7216.             WORD    segment number (when running in real mode)
  7217.             DWORD -> buffer for descriptor
  7218.         Return: CF clear if successful
  7219.                 buffer filled
  7220.             CF set on error
  7221.                 AX destroyed???
  7222.             STACK unchanged
  7223.         0005h ???
  7224.         STACK:    WORD    selector for ???
  7225.             WORD    subfunction number???
  7226.                 0000h run previously-loaded program???
  7227.                 0001h ??? (similar to 0000h)
  7228.                 0002h
  7229.                 0003h
  7230.                 0005h ??? (similar to 0000h and 0001h)
  7231.         Return: AX = status???
  7232.             STACK unchanged
  7233.         0006h ???
  7234.         STACK:    WORD ???
  7235.             DWORD -> WORD (call) max iterations of ???
  7236.                       (return) remaining iterations
  7237.         Return: AX = ???
  7238.             STACK unchanged
  7239.         0007h unused
  7240.         Return: AX = 0001h
  7241.         0008h unused
  7242.         Return: AX = 0001h
  7243.         0009h copy protected-mode memory into conventional memory
  7244.         STACK:    WORD    selector for source segment
  7245.             WORD    segment of source if in real mode???
  7246.             DWORD    offset of source
  7247.             WORD    number of bytes to copy
  7248.             DWORD -> low-memory destination
  7249.         Return: AX = status
  7250.             STACK unchanged
  7251.         000Ah copy conventional memory into protected-mode memory
  7252.         STACK:    WORD    selector for destination segment
  7253.             WORD    segment of destination if in real mode???
  7254.             DWORD    offset of destination
  7255.             WORD    number of bytes to copy
  7256.             DWORD -> low-memory source
  7257.         Return: AX = status
  7258.             STACK unchanged
  7259.         000Bh get ??? pointers
  7260.         STACK:    WORD desired pointer
  7261.                 0000h get ???
  7262.                 0002h get protected-mode CR3
  7263.                 0003h get 4K page table buffer pointer
  7264.                 else Return: DX:AX = FFFFh:FFFFh
  7265.         Return: DX:AX = requested pointer
  7266.             STACK unchanged
  7267.         000Ch set ??? pointers
  7268.         STACK:    WORD desired pointer
  7269.                 0000h set ???
  7270.                 0002h set protected-mode CR3
  7271.                 0003h set 4K page table buffer pointer
  7272.                 else ignore
  7273.             DWORD new value for pointer
  7274.         Return: STACK unchanged
  7275.         000Dh get ??? pointers
  7276.         STACK:    WORD desired pointer
  7277.                 0000h get ???
  7278.                 0001h get ???
  7279.                 0002h get ???
  7280.                 0003h get ???
  7281.                 0004h get ???
  7282.                 0005h get ???
  7283.                 0006h get ???
  7284.                 0007h get ???
  7285.                 else Return: DX:AX = FFFFh:FFFFh
  7286.         Return: DX:AX = desired pointer
  7287.             STACK unchanged
  7288.         000Eh set ??? pointer
  7289.         STACK:    WORD desired pointer
  7290.                 0000h set ???
  7291.                 0001h set ???
  7292.                 0002h set ???
  7293.                 0003h set ???
  7294.                 0004h set ???
  7295.                 0005h set ???
  7296.                 0006h set ???
  7297.                 0007h set ???
  7298.                 else Return: DX:AX = FFFFh:FFFFh
  7299.         Return: STACK unchanged
  7300.         000Fh get ???
  7301.         Return: AX = ??? (seen 0008h)
  7302.         0010h get ???
  7303.         Return: AX = ???
  7304.         0011h determine whether selector is valid
  7305.         STACK:    WORD    possible selector
  7306.         Return: AX = selector or 0000h if invalid
  7307.             STACK unchanged
  7308.         0012h get physical address
  7309.         STACK:    WORD    selector for desired segment
  7310.             WORD    segment number if in real mode
  7311.             DWORD    offset within segment
  7312.         Return: DX:AX = 32-bit physical address or 00000000h on error
  7313.             BX destroyed
  7314.             STACK unchanged
  7315.         0013h ???
  7316.         Note:    normally jumps to code for function 0012h
  7317.         0014h copy protected-mode memory to conventional memory, with ???
  7318.         STACK:    WORD    selector for source segment
  7319.             WORD    segment of source if in real mode???
  7320.             DWORD    offset of source
  7321.             WORD    number of bytes to copy
  7322.             DWORD -> low-memory destination
  7323.         Return: AX = status???
  7324.             STACK unchanged
  7325.         0015h copy conventional memory to protected-mode memory, with ???
  7326.         STACK:    WORD    selector for destination segment
  7327.             WORD    segment of destination if in real mode???
  7328.             DWORD    offset of destination
  7329.             WORD    number of bytes to copy
  7330.             DWORD -> low-memory source
  7331.         Return: AX = status???
  7332.             STACK unchanged
  7333.         0016h set ??? pointer
  7334.         STACK:    WORD    unused
  7335.             DWORD -> ??? or 0000h:0000h
  7336.         Return: AX = 0000h
  7337.             STACK unchanged
  7338.         0017h allocate real-mode procedure???
  7339.         STACK:    DWORD    ASCIZ name of procedure
  7340.             DWORD ???
  7341.             DWORD    address of subroutine to invoke
  7342.         Return: AX = status
  7343.                 0032h procedure by that name exists
  7344.                 0033h no more real-mode procedures available
  7345.             DX destroyed
  7346.             STACK unchanged
  7347.         0018h unused
  7348.         Return: AX = 0001h
  7349.         0019h get parameter block
  7350.         Return: DX:AX -> parameter block (format unknown at this time,
  7351.                 but 92h bytes)
  7352.                 (preceded by signature "!!PARAM-BLOCK!!")
  7353.         001Ah get ???
  7354.         Return: AX = ??? (0148h seen)
  7355.         001Bh free real-mode procedure???
  7356.         STACK:    DWORD -> ASCIZ name of procedure
  7357.         Return: ???
  7358.             STACK unchanged
  7359.         001Ch check whether packets from protected mode task pending
  7360.         Return: AX = 0001h if packets pending, 0000h if not
  7361.         001Dh set ???
  7362.         STACK:    DWORD ??? or 0000h:0000h
  7363.         Return: AX,BX destroyed
  7364.             STACK unchanged
  7365.         001Eh ???
  7366.         STACK:    WORD ??? (high byte ignored)
  7367.             DWORD -> data structure (see below)
  7368.         Return: AX,BX,CX,DX destroyed
  7369.             data structure updated
  7370.             STACK unchanged
  7371.         Format of data structure
  7372.         Offset    Size    Description
  7373.          00h  2 BYTEs    unused
  7374.          02h    WORD    ???
  7375.          04h    WORD    ???
  7376.          06h    WORD    ???
  7377.          08h  2 BYTEs    unused
  7378.          0Ah    WORD    ???
  7379.          0Ch    WORD    (call) ???
  7380.                 (return) offset of this data structure (BUG?)
  7381.         001Fh set ???
  7382.         STACK:    WORD ??? (set to 0001h if zero)
  7383.         Return: AX destroyed
  7384.             STACK unchanged
  7385.         0020h ???
  7386.         STACK:    DWORD -> ??? (8 bytes of data)
  7387.         Return: AX = ???
  7388.             STACK unchanged
  7389.         0021h ???
  7390.         STACK:    DWORD -> ??? (8 bytes of data)
  7391.             WORD    ???
  7392.             WORD    ???
  7393.         Return: AX = ???
  7394.             STACK unchanged
  7395.         0022h ???
  7396.         STACK:    DWORD -> ??? (8 bytes of data)
  7397.             DWORD -> 4-byte buffer for results
  7398.         Return: AX = ???
  7399.             STACK unchanged
  7400.         0023h ???
  7401.         STACK:    DWORD -> ??? (8 bytes of data)
  7402.         Return: AX = ???
  7403.             STACK unchanged
  7404.         0024h set ???
  7405.         STACK:    WORD ???
  7406.         Return: AX destroyed
  7407.             STACK unchanged
  7408.         0025h get ???
  7409.         Return: AX = ??? (value set with func 0024h)
  7410.         0026h BUG: jumps to hyperspace due to fencepost error
  7411.         FFFFh set DOS memory management functions
  7412.         BX:SI -> FAR routine for allocating DOS memory
  7413.             (called with AH=48h,BX=number of paragraphs to alloc;
  7414.              returns CF clear, AX=segment of allocated memory, or
  7415.                  CF set on error)
  7416.         CX:DI -> FAR routine for freeing DOS memory
  7417.             (called with AH=49h,ES=segment of block to free;
  7418.              returns CF set on error,AX=error code)
  7419.         Note: each of these pointers normally points at INT 21/RETF
  7420.         other Return: AX = 0001h
  7421. Note:    BX may be destroyed by any of the API calls
  7422. --------E-2FFBA1BX0084-----------------------
  7423. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  7424.     AX = FBA1h
  7425.     BX = 0084h
  7426.     ES:DI -> response buffer (see below)
  7427. Return: ES:DI buffer filled
  7428. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7429.  
  7430. Format of response buffer:
  7431. Offset    Size    Description
  7432.  00h  4 BYTEs    signature "IABH"
  7433.  04h    WORD    success indicator
  7434.         0001h failed (INT 2F hooked by another program)
  7435.         unchanged if successful
  7436.  06h    WORD    segment of ???
  7437.  08h    WORD    segment of ??? memory block to free if nonzero
  7438.  0Ah    WORD    segment of ??? memory block to free if nonzero
  7439. --------s-2FFBFBES0000-----------------------
  7440. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  7441.     AX = FBFBh
  7442.     ES = 0000h
  7443. Return: ES nonzero if installed
  7444.         ES:BX -> entry point data structure (see below)
  7445. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  7446.  
  7447. Format of entry point data structure:
  7448. Offset    Size    Description
  7449.  00h  3 BYTEs    signature "FB "
  7450.  03h    BYTE    driver major version number???
  7451.  04h    DWORD    speech driver entry point
  7452.  08h 24 BYTEs    ???
  7453.  20h  ? BYTEs    data buffer for calling speech driver
  7454.  
  7455. Call driver entry point with:
  7456.     AL = function
  7457.         07h speak a string
  7458.         data buffer (see above) contains:
  7459.             BYTE  length of string
  7460.               N BYTEs string to speak
  7461. --------N-2FFE00BX4454-----------------------
  7462. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7463.     AX = FE00h
  7464.     BX = 4454h ("DT")
  7465.     CX = 4B52h ("KR")
  7466.     DX = 4E4Dh ("NM")
  7467. Return: AL = FFh if installed
  7468.        BX = 524Eh ("RM")
  7469.        CX = 4D44h ("MD")
  7470.        DX = 544Bh ("TK")
  7471. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7472. SeeAlso: AX=FE08h
  7473. --------N-2FFE00BX4454-----------------------
  7474. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7475.     AX = FE00h
  7476.     BX = 4454h ("DT")
  7477.     CX = 4B52h ("KR")
  7478.     DX = 544Dh ("TM")
  7479. Return: AL = FFh if installed
  7480.        BX = 5254h ("RT")
  7481.        CX = 4D44h ("MD")
  7482.        DX = 544Bh ("TK")
  7483. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7484. SeeAlso: AX=FE08h
  7485. --------U-2FFE00DI4E55-----------------------
  7486. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  7487.     AX = FE00h
  7488.     DI = 4E55h ("NU")
  7489.     SI = TSR identifier
  7490.         4346h ("CF") NCACHE-F (v5) / NCACHE (v6.0+)
  7491.         4353h ("CS") NCACHE-S (v5 only)
  7492.         4443h ("DC") DISKREET
  7493.         444Dh ("DM") DISKMON
  7494.         4653h ("FS") FILESAVE (v5) / EP (v6.0+)
  7495. Return: SI = TSR reply
  7496.         lowercase version of SI on entry (i.e. SI OR 2020h)
  7497.     AH = status
  7498.         00h installed but disabled internally
  7499.         01h installed and enabled
  7500.     AL = status
  7501.         00h NCACHE-x or DISKREET installed
  7502.         01h FILESAVE / EP / DISKMON v6 installed
  7503.         45h DISKMON v5 installed
  7504.     BX = length of *.INI file (DISKMON and FILESAVE/EP only) (see below)
  7505.     CX = segment of resident portion
  7506.         FFFFh if completely loaded high (NCACHE)
  7507. ---FILESAVE/EP---
  7508.     DL = ??? (apparently always 00h)
  7509. ---DISKMON---
  7510.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6])
  7511. Note:    the value returned in CX is incorrect for NCACHE 6.00
  7512. SeeAlso: AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  7513.  
  7514. Format of DISKMON.INI file:
  7515. Offset    Size    Description
  7516. -6Ch 108 BYTEs    (in memory copy only)
  7517.         list of filenames which are always protected:
  7518.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  7519.           MIO.SYS/IO.BIN, COMMAND.COM
  7520.  00h    BYTE    ??? always 01h
  7521.  01h    BYTE    disk light (00h off, 01h on)
  7522.  02h    BYTE    disk protection (00h off, 01h on)
  7523.  03h    BYTE    protected areas
  7524.         01h system area
  7525.         02h files
  7526.         03h system area and files
  7527.         04h entire disk
  7528.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  7529.  05h 27 BYTEs    filename extension list (9 entries)
  7530.         (lowercase, blank padded or = 000000h)
  7531.  20h 240 BYTEs    filename list (20 entries)
  7532.         (lowercase, name and extension blank padded, with '.')
  7533. Note:    CX:0508h -> copy in installed TSR (v5)
  7534.     CX:052Fh -> copy in installed TSR (v6)
  7535.  
  7536. Format of FILESAVE.INI / EP.INI file:
  7537. Offset    Size    Description
  7538.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  7539.  00h    BYTE    drives    A: - H:
  7540.  01h    BYTE    drives    I: - P:
  7541.  02h    BYTE    drives    Q: - X:
  7542.  03h    BYTE    drives    Y: - Z:
  7543.  04h    BYTE    which files to protect
  7544.         00h all files
  7545.         01h all files with extension in list
  7546.         02h all files except those with extension in list
  7547.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  7548.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  7549.  21h    WORD    number of days after which files are purged (0 = never)
  7550.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  7551. Note:    CX:03D2h -> copy in installed TSR (v5.0)
  7552.     CX:03F5h -> copy in installed TSR (v6.0)
  7553. --------U-2FFE01DI4E55-----------------------
  7554. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  7555.     AX = FE01h
  7556.     DI = 4E55h ("NU")
  7557.     SI = TSR identifier (see AX=FE00h)
  7558. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7559.     AX = status
  7560.         0002h successful (DISKMON, FILESAVE, EP)
  7561.         FE00h successful (NCACHE-x, DISKREET)
  7562. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  7563.       report generated by the programs still indicates the previous state,
  7564.       and DISKMON.INI is not updated
  7565.     apparently has no effect on DISKREET
  7566. SeeAlso: AX=FE00h,AX=FE02h
  7567. --------U-2FFE02DI4E55-----------------------
  7568. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  7569.     AX = FE02h
  7570.     DI = 4E55h ("NU")
  7571.     SI = TSR identifier (see AX=FE00h)
  7572. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7573.     AX = status
  7574.         0004h successful (DISKMON, FILESAVE)
  7575.         FE00h successful (NCACHE-x, DISKREET)
  7576. Notes:    (see also AX=FE01h)
  7577.     this function appears to be unsafe, as the cache buffers are not
  7578.       flushed
  7579. SeeAlso: AX=FE00h,AX=FE01h
  7580. --------U-2FFE03DI4E55-----------------------
  7581. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  7582.     AX = FE03h
  7583.     DI = 4E55h ("NU")
  7584.     SI = TSR identifier (see AX=FE00h)
  7585. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7586.     AX = status
  7587.         0006h successful???
  7588. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  7589.     useful for flushing NCACHE before rebooting
  7590. SeeAlso: AX=FE00h,AX=FE10h
  7591. --------U-2FFE04DI4E55-----------------------
  7592. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7593.     AX = FE04h
  7594.     DI = 4E55h ("NU")
  7595.     SI = TSR identifier (see AX=FE00h)
  7596. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7597.     AX = status
  7598.         0008h successful???
  7599. SeeAlso: AX=FE00h
  7600. --------U-2FFE05DI4E55-----------------------
  7601. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7602.     AX = FE05h
  7603.     DI = 4E55h ("NU")
  7604.     SI = TSR identifier (see AX=FE00h)
  7605. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7606.     AX = status
  7607.         000Ah successful???
  7608. Note:    reportedly dangerous
  7609. SeeAlso: AX=FE00h
  7610. --------N-2FFE08-----------------------------
  7611. INT 2F - PC-NFS ??? - GET ???
  7612.     AX = FE08h
  7613. Return: ES:BX -> ???
  7614. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7615.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  7616.       to AX=FE00h/DX=544Dh support this function
  7617. SeeAlso: AX=FE00h/BX=4454h
  7618. --------U-2FFE10DI4E55-----------------------
  7619. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  7620.     AX = FE10h
  7621.     DI = 4E55h ("NU")
  7622.     SI = TSR identifier (see AX=FE00h)
  7623. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7624.     AX = status
  7625. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  7626.       detected
  7627. SeeAlso: AX=FE03h
  7628. --------N-2FFF00-----------------------------
  7629. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  7630.     AX = FF00h
  7631. Return: AL = 00h not installed, OK to install
  7632.        = 01h not installed, not OK to install
  7633.        = FFh installed
  7634. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF02h,INT 7A"Topware"
  7635. --------N-2FFF01-----------------------------
  7636. INT 2F - Topware Network Operating System - GET VERSION
  7637.     AX = FF01h
  7638. Return: AX = version
  7639. SeeAlso: AX=FF00h,AX=FF02h
  7640. --------N-2FFF02-----------------------------
  7641. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  7642.     AX = FF02h
  7643. Return: ES:BX -> version string
  7644. SeeAlso: AX=FF00h,AX=FF01h
  7645. --------N-2FFF10-----------------------------
  7646. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  7647.     AX = FF10h
  7648. Return: AL = status (00h not installed, 01h installed)
  7649. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  7650. --------N-2FFF11-----------------------------
  7651. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  7652.     AX = FF11h
  7653. Note:    this function is only available on workstations, not on the server
  7654. SeeAlso: AX=FF10h,AX=FF12h
  7655. --------N-2FFF12-----------------------------
  7656. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  7657.     AX = FF12h
  7658. Note:    this function is only available on workstations, not on the server
  7659. SeeAlso: AX=FF10h,AX=FF11h
  7660. --------N-2FFF13-----------------------------
  7661. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  7662.     AX = FF13h
  7663.     CL = new state (00h off, 01h on)
  7664. SeeAlso: AX=FF10h
  7665. --------N-2FFF14-----------------------------
  7666. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  7667.     AX = FF14h
  7668. Note:    this function is only available on workstations, not on the server
  7669. SeeAlso: AX=FF10h,AX=FF15h
  7670. --------N-2FFF15-----------------------------
  7671. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  7672.     AX = FF15h
  7673. Note:    this function is only available on workstations, not on the server
  7674. SeeAlso: AX=FF10h,AX=FF14h
  7675. --------N-2FFF16-----------------------------
  7676. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  7677.     AX = FF16h
  7678.     BL = which to set (00h TopShow, FFh TopTerm)
  7679.     CX = destination screen
  7680.         0000h all stations
  7681.         0000h-00FFh (TopTerm only) send to group CL
  7682.         8001h-80FEh send to station CL
  7683. SeeAlso: AX=FF18h
  7684. --------N-2FFF18-----------------------------
  7685. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  7686.     AX = FF18h
  7687. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  7688. --------N-2FFF23-----------------------------
  7689. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  7690.     AX = FF23h
  7691. SeeAlso: AX=FF00h
  7692. --------N-2FFF27-----------------------------
  7693. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  7694.     AX = FF27h
  7695. Return: AL = type (00h complete version, 01h simple version)
  7696.     BL = "show" functions flag (00h disabled, 01h enabled)
  7697. SeeAlso: AX=FF16h,AX=FF18h
  7698. --------!------------------------------------
  7699.